日期:2014-05-20  浏览次数:20791 次

ResultSet的一个问题
如果我在查询数据的过程中,出现异常,ResultSet 会不会被创建,ResultSet 我要不要关闭啊?

------解决方案--------------------
ResultSet executeQuery() throws SQLException;
exception:SQLException if a database access error occurs or the SQL
statement does not return a ResultSet object
最好如下:
Java code

[color=#FF0000][b]finally {
    rs.close();
    rs = null;
}[/b][/color]

------解决方案--------------------
关不了~因为那是null,所以不用!
这么写!
if(result!=null)
 result.close();
------解决方案--------------------
直接关掉connection就可以了

如果程序要求比较严谨的话
可以在关之前进行一下null判断
如楼上所说
------解决方案--------------------
理论上是不用的,不过养成习惯总是好的。
Java code
        
finally { 
            try {
                if (rst != null) {
                    rst.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
}

------解决方案--------------------
探讨
理论上是不用的,不过养成习惯总是好的。

Java code
finally {
try {
if (rst != null) {
rst.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}

------解决方案--------------------
那就在捕获异常时,判断是否关闭,再根据结果来决定如何操作。
------解决方案--------------------
查询异常后 ResultSet 为 null;
个人认为 :每个都要关. 
而且没有必要判断null 
因为 出现了异常说明这个代码是错的. 
必须要改修改的.
如果是由于. 网络中断,数据库被破坏 等 不可预测的错误导至 的异常 判断为null 也余事无补

纯属个人观点!!!

------解决方案--------------------
引用楼主 yuchui 的帖子:
如果我在查询数据的过程中,出现异常,ResultSet 会不会被创建,ResultSet 我要不要关闭啊?

------解决方案--------------------
探讨
理论上是不用的,不过养成习惯总是好的。

Java code
finally {
try {
if (rst != null) {
rst.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}

------解决方案--------------------
探讨
理论上是不用的,不过养成习惯总是好的。

Java code
finally {
try {
if (rst != null) {
rst.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}

------解决方案--------------------
Java code

ResultSet rs = statement.executeQuery("select * from zhao");
        if(rs!=null) {//這裡要判斷的!
            rs.close();
        }