【发布时间】:2011-01-14 13:50:35
【问题描述】:
我有点糊涂了。我从 Java Database Connectivity 阅读以下内容:
Connection conn = DriverManager.getConnection(
"jdbc:somejdbcvendor:other data needed by some jdbc vendor",
"myLogin",
"myPassword" );
Statement stmt = conn.createStatement();
try {
stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) " );
} finally {
// It's important to close the statement when you are done with it
stmt.close();
}
您不需要关闭conn 连接吗?
如果 conn.close() 没有发生,到底发生了什么?
我有一个我正在维护的私有 Web 应用程序,它目前没有关闭任何一种形式,但重要的一个真的是 stmt 一个、conn 一个,还是两者兼而有之?
该站点间歇性地关闭,但服务器一直说这是数据库连接问题。我怀疑它没有被关闭,但我不知道要关闭哪个(如果有的话)。
【问题讨论】:
-
自行关闭连接始终是最佳实践,无需依赖其他驱动程序和模板来处理关闭。关闭连接失败将导致套接字和资源永远打开,直到崩溃(没有更多资源场景)或重新启动。