用作实例变量的结果集



在程序中,连接器、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;
    }
}

相关内容

  • 没有找到相关文章

最新更新