È per due motivi:
- La connessione viene chiusa dopo l'esecuzione del primo
PreparedStatement getconutilizza un'instancevariabile invece dilocalvariabile. Per questo motivo, stessoconnla variabile (quella chiusa in precedenza) viene restituita quandogetconviene 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);
}
}