Mysql
 sql >> Base de données >  >> RDS >> Mysql

Aucune opération autorisée après la fermeture de la connexion MYSQL

C'est pour deux raisons :

  • La connexion est fermée après l'exécution du premier PreparedStatement
  • getcon utilise une instance variable au lieu de local variable. Pour cette raison, même conn variable (celle qui a été fermée plus tôt) est renvoyée lorsque getcon est appelé la prochaine fois.

Pour résoudre ce problème, getcon et DBConnect doit être modifié pour déclarer un conn local variable et la renvoyer (en fait, vous n'avez pas besoin de DBConnect du tout), par exemple :

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);
    }
}