C'est pour deux raisons :
- La connexion est fermée après l'exécution du premier
PreparedStatement getconutilise uneinstancevariable au lieu delocalvariable. Pour cette raison, mêmeconnvariable (celle qui a été fermée plus tôt) est renvoyée lorsquegetconest 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);
}
}