我的问题与此声明有关:
立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等待它自动关闭时发生。 http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#close%28%29
那么,Statement对象在哪些情况下会自动关闭呢?
我的问题与此声明有关:
立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等待它自动关闭时发生。 http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#close%28%29
那么,Statement对象在哪些情况下会自动关闭呢?
对于 JDBC 4.0 及更早版本(Java 6 及更早版本):
JDBC 4.1 (Java 7) 添加了以下内容:
closeOnCompletion()
已调用语句并且ResultSet
从该语句创建的语句已被读取到最后一行之外(并且该读取发生在启用 closeOnCompletion 之后) ,则该语句将关闭我不认为'try-with-resources'会自动关闭连接,但'只是'语法糖 try ... finally
。
您可以使用 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()) {
// ...
}
当创建它的连接关闭时,它就关闭了。
如果您担心确定关闭连接、资源等,我会简单地使用 spring jdbc。它增加了很少的开销,很容易实现,并且会让你摆脱那些繁琐的 try-catch-finally 结构,只是为了进行简单的查询。