Това се дължи на две причини:
- Връзката се затваря след изпълнението на първия
PreparedStatement
getcon
използваinstance
променлива вместоlocal
променлива. Поради това същотоconn
променливата (тази, която беше затворена по-рано) се връща, когатоgetcon
се извиква следващия път.
За да поправите това, getcon
и DBConnect
трябва да бъде променен, за да се декларира локален conn
променлива и го върнете (всъщност нямате нужда от DBConnect
изобщо), напр.:
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);
}
}