结果集关闭时语句会发生什么?
Statement stmt = null;
ResultSet rs = null;
try {
stmt = con.createStatement();
rs = stmt.executeQuery(query.toString());
...
}
// lots of code
rs.close()
Run Code Online (Sandbox Code Playgroud)
注意:当Statement对象关闭,重新执行或用于从多个结果序列中检索下一个结果时,Statement对象会自动关闭该对象.
但是当ResultSet首先关闭时会发生什么?
对于什么问题,首先应该发生什么?
您应该按照创建它们的相反顺序关闭对象.首先是ResultSet,然后Statement是最后的结果Connection.
如果你没有关闭Statement它,它会保持打开状态,你可以用它执行另一个查询(如果它是a PreparedStatement或CallableStatement你能够更改查询参数).
另请注意,您引用的是JDBC规范,其实现取决于JDBC驱动程序提供程序.通常,您不应该信任它们,并手动关闭这些对象.
另一件事 - 我认为更重要 - 如果你使用连接池(比如在JBoss上),关闭连接只是将它释放回池中,而底层对象不会被释放.因此,建议始终手动释放您创建的所有对象.
| 归档时间: |
|
| 查看次数: |
1375 次 |
| 最近记录: |