Das hat zwei Gründe:
- Verbindung wird nach Ausführung des ersten
PreparedStatementgeschlossen getconverwendet eineinstanceVariable stattlocalVariable. Aus diesem Grund dasselbeconnVariable (diejenige, die zuvor geschlossen wurde) wird zurückgegeben, wenngetconwird beim nächsten Mal aufgerufen.
Um dies zu beheben, getcon und DBConnect müssen geändert werden, um ein lokales conn zu deklarieren Variable und geben Sie sie zurück (tatsächlich brauchen Sie DBConnect nicht überhaupt), z. B.:
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);
}
}