Đó là bởi vì hai lý do:
- Kết nối bị đóng sau khi thực thi
PreparedStatement
đầu tiên -
getcon
sử dụng mộtinstance
biến thay vìlocal
Biến đổi. Do đó, cùng mộtconn
biến (biến đã bị đóng trước đó) được trả về khigetcon
sẽ được gọi vào lần sau.
Để khắc phục điều này, getcon
và DBConnect
cần được sửa đổi để khai báo một conn
cục bộ và trả về nó (trên thực tế, bạn không cần DBConnect
ở tất cả), ví dụ:
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);
}
}