3

我的问题与此声明有关:

立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等待它自动关闭时发生。 http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#close%28%29

那么,Statement对象在哪些情况下会自动关闭呢?

4

4 回答 4

4

对于 JDBC 4.0 及更早版本(Java 6 及更早版本):

  • 关闭连接时关闭语句

JDBC 4.1 (Java 7) 添加了以下内容:

  • 如果closeOnCompletion()已调用语句并且ResultSet从该语句创建的语句已被读取到最后一行之外(并且该读取发生启用 closeOnCompletion 之后) ,则该语句将关闭

我不认为'try-with-resources'会自动关闭连接,但'只是'语法糖 try ... finally

于 2012-05-17T08:45:09.253 回答
2

您可以使用 try-with-resources 语句自动关闭 java.sql.Connection、java.sql.Statement 和 java.sql.ResultSet 对象,无论是否引发了 SQLException 或任何其他异常。一个 try-with-resources 语句由一个 try 语句和一个或多个声明的资源(用分号分隔)组成。来源:使用 try-with-resources 语句自动关闭 JDBC 资源

以下语句是一个 try-with-resources 语句,它声明了一个资源 stmt,该资源将在 try 块终止后自动关闭:

try (Statement stmt = con.createStatement()) {

  // ...

}
于 2012-05-17T05:44:35.203 回答
1

当创建它的连接关闭时,它就关闭了。

于 2012-05-17T05:41:24.040 回答
1

如果您担心确定关闭连接、资源等,我会简单地使用 spring jdbc。它增加了很少的开销,很容易实现,并且会让你摆脱那些繁琐的 try-catch-finally 结构,只是为了进行简单的查询。

于 2012-05-17T05:47:19.400 回答