关闭a java.sql.Connection还会关闭从该连接获得的所有语句,准备好的语句等吗?或者,如果我关闭连接但是保留语句等未公开会导致内存泄漏吗?
duf*_*ymo 11
关闭java.sql.Connection是否也会关闭从该连接获得的所有语句,预处理语句等?或者,如果我关闭连接但是保留语句等未公开会导致内存泄漏吗?
你应该不依赖于它.
规范如下:
应用程序调用Statement.close方法来指示它已完成处理语句.关闭创建它们的连接时,将关闭所有Statement对象.但是,应用程序在完成处理后立即关闭语句是一种很好的编码实践.这允许立即释放语句正在使用的任何外部资源.
最佳做法是在finally块中关闭所有ResultSet,Statements和Connections,每个ResultSet都包含在它们自己的try/catch中,与获取的顺序相反.
写一个这样的类:
public class DatabaseUtils
{
public static void close(Statement s)
{
try
{
if (s != null)
{
s.close();
}
}
catch (SQLException e)
{
// log or report in someway
e.printStackTrace();
}
}
// similar for ResultSet and Connection
}
Run Code Online (Sandbox Code Playgroud)
像这样打电话:
Statement s;
try
{
// JDBC stuff here
}
finally
{
DatabaseUtils.close(s);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6180 次 |
| 最近记录: |