É por dois motivos:
- A conexão é fechada após a execução do primeiro
PreparedStatement
getcon
usa umainstance
variável em vez delocal
variável. Devido a isso, o mesmoconn
variável (a que foi fechada anteriormente) é retornada quandogetcon
é chamado na próxima vez.
Para corrigir isso,
getcon
e DBConnect
precisam ser modificados para declarar um conn
local variável e retorne-a (na verdade, você não precisa de DBConnect
nada), por exemplo: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);
}
}