java - 在 Java SQL 中自动关闭结果集

标签 java sql jdbc

考虑以下代码

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会抛出如下警告

This method may fail to clean up java.sql.ResultSet

最佳答案

When a Statement object is closed, its current ResultSet object, if one exists, is also closed.

Thisthis显示 Oracle 可能有问题,您可能必须明确关闭 ResultSet。但同样,根据 Javadocs,这应该不是问题。因此,警告,也许。

关于java - 在 Java SQL 中自动关闭结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10602271/

相关文章:

sql - 将原始查询转换为嵌套 where 上的 Laravel

java - 填写表格中的缺失值

MySQL - 如何将此表减少到总成本?

java - 如何通过 Jackson Parser 从 Java 实例返回 String 对象

java - Java如何连接Mysql?

Java 正则表达式以条件替换器开头和结尾

java - JDBC嵌入式Derby : No suitable driver found

java - a = a + b-->无法从 int 转换为 char。 a+=b-->通过

sql - json Web 服务输出到 azure sql with/credentials

java - 用于大型数据集的嵌入式 Java 数据库