Det beror på två skäl:
- Anslutningen stängs efter exekvering av första
PreparedStatement
getcon
använder eninstance
variabel istället förlocal
variabel. På grund av detta, sammaconn
variabel (den som stängdes tidigare) returneras närgetcon
kallas 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);
}
}