Het heeft twee redenen:
- De verbinding wordt verbroken na de uitvoering van de eerste
PreparedStatement getcongebruikt eeninstancevariabele in plaats vanlocalvariabel. Hierdoor is dezelfdeconnvariabele (degene die eerder gesloten was) wordt geretourneerd wanneergetconwordt de volgende keer gebeld.
Om dit op te lossen, getcon en DBConnect moet worden aangepast om een lokale conn . te declareren variabele en retourneer deze (in feite heeft u DBConnect niet nodig helemaal niet), bijv.:
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);
}
}