结果集关闭时语句会发生什么情况?
Statement stmt = null;
ResultSet rs = null;
try {
stmt = con.createStatement();
rs = stmt.executeQuery(query.toString());
...
}
// lots of code
rs.close()
Note: A ResultSet object is automatically closed by the Statement object that generated it when that Statement object is closed, re-executed, or is used to retrieve the next result from a sequence of multiple results.
但是当 ResultSet 先关闭时会发生什么?
对于什么事情,应该先发生什么?
最佳答案
您应该按照与创建对象相反的顺序关闭对象。
所以首先是 ResultSet
,然后是 Statement
,最后是 Connection
。
如果您不关闭 Statement
,它会保持打开状态,您可以用它执行另一个查询(如果它是 PreparedStatement
或 CallableStatement
您可以更改查询参数)。
另请注意,您引用的是 JDBC 规范,其实现取决于 JDBC 驱动程序提供者。通常,您不应该信任它们,并手动关闭那些对象。
另一件事 - 我认为更重要 - 如果您使用连接池(如在 JBoss 上),关闭连接只会将其释放回池中,而不会释放底层对象。因此,建议始终手动释放您创建的所有对象。
关于java - 当 ResultSet 关闭时 Statement 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923027/