基本上,我使用 AbstractModel 类中定义的这些方法连接和断开数据库:
// close connection
public void closeConnection(){
try{
// if (!rs.isClosed()){
// rs.close();
// }
cstmt.close();
SingletonConnection.instance();
DatabaseConnection.closeConnection();
} catch (SQLException e){
System.out.println("SQL Exception: ");
e.printStackTrace();
}
}
// establish connection
public void createConnection(){
try {
SingletonConnection.instance();
myConnection = DatabaseConnection.establishConnection();
} catch (SQLException e){
e.printStackTrace();
}
}
在尝试关闭 ResultSet rs 时,我遇到了 NullPointerException 的另一个问题,但是 c3p0 文档说,当连接终止时,ResultSets 默认关闭。
这两个方法当然是调用 DatabaseConnection 类中的这两个方法:
// create connection
public static Connection establishConnection() throws SQLException {
return datasource.getConnection();
}
// close connection
public static void closeConnection() throws SQLException{
DataSources.destroy(datasource);
}
所以我基本上使用 getConnection() 和 destroy() 方法来打开和关闭数据源上的连接。这是处理 c3p0 连接池时的正确方法吗?它现在似乎工作正常。