Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Nenhuma operação permitida após a conexão fechada MYSQL


É por dois motivos:
  • A conexão é fechada após a execução do primeiro PreparedStatement
  • getcon usa uma instance variável em vez de local variável. Devido a isso, o mesmo conn variável (a que foi fechada anteriormente) é retornada quando getcon é chamado na próxima vez.

Para corrigir isso, getcon e DBConnect precisam ser modificados para declarar um conn local variável e retorne-a (na verdade, você não precisa de DBConnect nada), por exemplo:
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);
    }
}