在程序中,连接器、prepared语句和结果集用作实例变量,并在每次使用后关闭,如下所示,然后通过创建新的连接器对象来重用,将其分配给后续调用的con
。这样做是安全的,还是在方法中本地创建单独的连接器对象并在 finally 块中关闭它更好?
private void closeObjects() throws Exception{
if(rs!=null){
rs.close();
rs=null;
}
if(preparedstmt!=null){
preparedstmt.close();
preparedstmt=null;
}
if(con!=null){
con.close();
con=null;
}
}
实际上,我确实遇到了一个问题,即当我第一次运行程序时,它用作实例变量,它失败了,Result set not open
给出错误,但在第二次运行后开始工作。
[抱歉没有显示整个代码]
我更喜欢将JDBC实例作为执行SQL操作的方法中的局部变量。这种方法使它们的生命周期清晰,如果您忘记在某处调用 closeObjects(),您无需担心。如果要避免代码重复,请创建接受它们作为参数的方法,并从 finally 块调用它。
private void closeObjects(Connection con, ResultSet rs, Statement statement) throws Exception {
if (rs != null) {
rs.close();
rs=null;
}
if (statement != null) {
statement.close();
statement=null;
}
if (con != null) {
con.close();
con=null;
}
}