Itu karena dua alasan:
- Koneksi ditutup setelah eksekusi
PreparedStatementpertama getconmenggunakaninstancevariabel alih-alihlocalvariabel. Karena ini,connyang sama variabel (yang ditutup sebelumnya) dikembalikan ketikagetcondipanggil lain kali.
Untuk memperbaikinya, getcon dan DBConnect perlu dimodifikasi untuk mendeklarasikan conn lokal variabel dan mengembalikannya (sebenarnya, Anda tidak perlu DBConnect sama sekali), misalnya:
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);
}
}