一旦执行第二个查询,上一个查询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