1.我到网上看到有人在写关闭数据库资源的时候建议这么写:
if(rs != null && rs.isClose()){
rs.close(); //异常处理就不写了
}
问题来了,如果rs、conn、st等没有实例化,那么conn.isClose() 就会报异常,而使用 rs != null 也能保证资源的关闭,为什么还有这么麻烦呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
建议使用 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);
}######“短路与”都不知道?######
如果rs、conn、st等没有实例化,那么conn.isClose() 就会报异常
为什么?
######简单来说,就是 rs 都没初始化的时候报了异常 rs 就是空,所以不需要关闭,如果rs初始化成功(rs != null) 那么就 close ######正解