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 ######正解版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。