我的问题是关于这个陈述:
立即释放此Statement对象的数据库和JDBC资源,而不是等待它自动关闭时发生。 http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#close%28%29
那么,在哪种情况下Statement对象会自动关闭?
答案 0 :(得分:4)
对于JDBC 4.0及更早版本(Java 6及更早版本):
JDBC 4.1(Java 7)添加了以下内容:
closeOnCompletion()
,则会关闭一个语句
从该语句创建的ResultSet
已被读取超出最后一行(并且在启用closeOnCompletion后读取发生)我不认为'try-with-resources'会自动关闭连接,而只是try ... finally
的“只是”语法糖。
答案 1 :(得分:2)
您可以使用try-with-resources语句自动关闭 java.sql.Connection,java.sql.Statement和java.sql.ResultSet 对象,无论是SQLException还是任何其他异常 已被抛出。 try-with-resources语句包含一个try 声明和一个或多个声明的资源(由...分隔 分号)。资料来源:Using try-with-resources Statements to Automatically Close JDBC Resources
以下语句是一个try-with-resources语句,它声明一个资源stmt,它将自动关闭,然后try块终止:
try (Statement stmt = con.createStatement()) {
// ...
}
答案 2 :(得分:1)
当创建它的连接关闭时,它会关闭。
答案 3 :(得分:1)
如果您关心的是确定关闭连接,资源等,我只需使用spring jdbc。它增加了很少的开销,它很容易实现,并且会让你摆脱那些繁琐的try-catch-finally结构,只是为了进行简单的查询。