关闭java.sql.Connection
是否也会关闭从该连接获得的所有语句,预备语句等?或者,如果我关闭连接但是保留语句等未公开会导致内存泄漏吗?
答案 0 :(得分:11)
关闭java.sql.Connection 也关闭所有的陈述, 准备好的陈述等 从那个连接?或者在那里 如果我关闭,将会出现内存泄漏 连接但保留声明, 等等?
你应该不依赖它。
规范内容如下:
应用程序调用该方法 Statement.close表明它 已完成处理声明。 将关闭所有Statement对象 什么时候创建它们的连接 关闭了。但是,编码很好 申请关闭的做法 他们有声明 完成处理它们。这允许 任何外部资源 声明正在使用中 立即
最佳做法是在finally块中关闭所有ResultSet,Statements和Connections,每个以自己的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
}
这样打电话:
Statement s;
try
{
// JDBC stuff here
}
finally
{
DatabaseUtils.close(s);
}