您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

重用ResultSet

重用ResultSet

一旦执行第二个查询,上一个查询ResultSet就会自动关闭。就Garbage Collection您而言,您不必担心。最后,您可以仅stmt.close()此而已。它将自动关闭所有相关ResultSet对象。

看一下:-ResultSet#close文档,其中说:-

关闭,重新执行或用于从多个结果序列中检索下一个结果时,由该对象生成的Statement对象将自动关闭ResultSet对象。

如果要测试是否关闭结果集,则可以使用while循环result set在while循环内部和内部进行迭代,创建另一个查询并将其分配给相同的结果集。您将看到将引发异常。

ResultSet res = stmt.executeQuery("SELECT * FROM soMetable");

while (res.next()) {
    res.getString(1);

    // Closes the prevIoUs `ResultSet`
    res = stmt.executeQuery("SELECT * FROM othertable");
}

因此,在上面的代码中,在第二次迭代中,您将获得一个 Exception: - Cannot perform operation after ResultSet is closed

其他 2022/1/1 18:38:00 有433人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶