Mysql
 sql >> Database >  >> RDS >> Mysql

Nessuna operazione consentita dopo la chiusura della connessione MySQL

È per due motivi:

  • La connessione viene chiusa dopo l'esecuzione del primo PreparedStatement
  • getcon utilizza un'instance variabile invece di local variabile. Per questo motivo, stesso conn la variabile (quella chiusa in precedenza) viene restituita quando getcon viene chiamato la prossima volta.

Per risolvere questo problema, getcon e DBConnect devono essere modificati per dichiarare un conn locale variabile e restituiscila (infatti, non hai bisogno di DBConnect affatto), es.:

public Connection getcon(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        String unicode="useSSL=false&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8";
        return DriverManager.getConnection("jdbc:mysql://localhost:15501/duckdb?"+unicode, "root", "_PWD");
    }catch(Exception ex){
        System.out.println(ex.getMessage());
        System.out.println("couldn't connect!");
        throw new RuntimeException(ex);
    }
}