繁体   English   中英

在Java SQL中自动关闭结果集

[英]automatic closing of result-set in Java SQL

请考虑以下代码

ResultSet rs = null;
Statement st = null;
try {
  //do somehting
 } catch (Exception e){
  //do something
 } finally {
     if(st != null){
       try {
       st.close();
       } catch (SQLException e) {
            log.error("Exception while closing statement: " + e);
       }
    }
 }

问题是当我们关闭语句时,它是否会关闭结果集,或者我们是否需要显式关闭结果集

if(rs != null){
   try {
   rs.close();
   } catch (SQLException e) {
        log.error("Exception while closing result set: " + e);
   }
}

我认为关闭语句将自动关闭结果集,但如果我没有显式关闭结果集,则FindBugs会抛出以下警告

此方法可能无法清除java.sql.ResultSet

关闭Statement对象时,其当前ResultSet对象(如果存在)也将关闭。

表明,甲骨文可能会遇到问题,你可能需要显式关闭ResultSet 但同样,根据Javadocs,这应该不是问题。 因此,警告,也许。

您不能指望ResultSet自动关闭,它取决于驱动程序实现以及它的合规性。 最好的策略是显式关闭ResultSet。

当您关闭语句或连接时,默认情况下也应该关闭它的所有子项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM