rs != null 和 rs.isClosed()的问题

萌萌哒的小丁丁 发布于 2015/05/17 12:01
阅读 1K+
收藏 0

1.我到网上看到有人在写关闭数据库资源的时候建议这么写:

if(rs != null && rs.isClose()){
    rs.close(); //异常处理就不写了
}

题来了,如果rs、conn、st等没有实例化,那么conn.isClose() 就会报异常,而使用 rs != null 也能保证资源的关闭,为什么还有这么麻烦呢?

加载中
0
Helloall
Helloall

建议使用 try-with-resources,相当于try-catch-finally。

try (Statement stmt = con.createStatement()) {
        ResultSet rs = stmt.executeQuery(query);

        while (rs.next()) {
            String coffeeName = rs.getString("COF_NAME");
            int supplierID = rs.getInt("SUP_ID");
            float price = rs.getFloat("PRICE");
            int sales = rs.getInt("SALES");
            int total = rs.getInt("TOTAL");

            System.out.println(coffeeName + ", " + supplierID + ", " + 
                               price + ", " + sales + ", " + total);
        }
    } catch (SQLException e) {
        JDBCTutorialUtilities.printSQLException(e);
    }
0
Joyzhou
Joyzhou
“短路与”都不知道?
0
霍啸林
霍啸林

如果rs、conn、st等没有实例化,那么conn.isClose() 就会报异常

为什么?

0
shijacky
shijacky
简单来说,就是 rs 都没初始化的时候报了异常 rs 就是空,所以不需要关闭,如果rs初始化成功(rs != null)  那么就 close 
一号男嘉宾
一号男嘉宾
正解
返回顶部
顶部