Det beror på två skäl:
- Anslutningen stängs efter exekvering av första
PreparedStatement getconanvänder eninstancevariabel istället förlocalvariabel. På grund av detta, sammaconnvariabel (den som stängdes tidigare) returneras närgetconkallas nästa gång.
För att åtgärda detta, getcon och DBConnect måste modifieras för att deklarera en lokal conn variabel och returnera den (du behöver faktiskt inte DBConnect alls), t.ex.:
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);
}
}