Dzieje się tak z dwóch powodów:
- Połączenie zostaje zamknięte po wykonaniu pierwszego
PreparedStatement
getcon
używainstance
zmienna zamiastlocal
zmienny. Z tego powodu ten samconn
zmienna (ta, która została wcześniej zamknięta) zostaje zwrócona, gdygetcon
zostanie wywołany następnym razem.
Aby to naprawić, getcon
i DBConnect
należy zmodyfikować, aby zadeklarować lokalny conn
zmienną i zwróć ją (w rzeczywistości nie potrzebujesz DBConnect
w ogóle), np.:
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);
}
}