在程序中,连接器,preparedstatement和resultset用作实例变量,并在每次使用后在下面给出的单独方法中关闭,然后通过创建新的连接器对象重新使用,并将其分配给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
但在第二次运行之后开始工作。
[不显示整个代码的道歉]
答案 0 :(得分:0)
我更喜欢将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;
}
}