【问题标题】:Does calling close on a ResultSet reference close the another reference referring to the same ResultSet?对 ResultSet 引用调用 close 是否会关闭引用同一 ResultSet 的另一个引用?
【发布时间】:2014-06-21 15:00:26
【问题描述】:

我有一个Servlet,它使用返回ResultSet 的静态实用程序方法。

在我的 Servlet 代码中

ResultSet rs = SimpleSearch.searchByName(request);

在我的searchByName 方法中,我有以下代码(不是完整代码);

try {
            preparedStatement = connection.prepareStatement(str);
            preparedStatement.setDate(1, firstSQLDOB);
            preparedStatement.setDate(2, secondSQLDOB);
            rs = preparedStatement.executeQuery();
            resultSet = rs;

        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            try {
                if (connection != null) {
                    connection.close();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

        return resultSet;

关闭rs 是否也关闭resultSet?

【问题讨论】:

    标签: java servlets jdbc


    【解决方案1】:

    是的,因为resultSet 和rs 是指向同一个对象的两个引用。

    我不会正常传递您的结果集,因为您想控制它的关闭(并防止资源泄漏)。我宁愿得到它,遍历并构建一组与其结果相关的对象,关闭结果集并从数据库中交回你的结果对象集合。

    【讨论】:

      【解决方案2】:

      这是相同的结果集。你关闭了它:它已经关闭了。没有关闭对同一对象的单独引用这样的事情。

      【讨论】:

      • 我认为这是最好的答案。简单而直接。(你关闭了它:它已经关闭了)
      【解决方案3】:

      关闭 rs 是否也会关闭 resultSet?

      是的。你说的对。它关闭了,因为它们指向相同的引用。

      【讨论】:

      • @Suresh Atta 有没有办法避免它?我想要 searchResult 但同时我想关闭 JDBC 资源。
      • @Phoenix 你可以使用CachedRowSet。
      猜你喜欢
      • 2016-02-08
      • 2014-01-01
      • 1970-01-01
      • 2016-07-01
      • 2014-05-17
      • 1970-01-01
      • 2022-06-12
      • 2014-08-10
      • 1970-01-01
      相关资源
      最近更新 更多