Javadoc说.close()
的{{1}}说它是..
立即释放此Statement对象的数据库和JDBC资源,而不是等待它自动关闭时发生。发布通常是好习惯 资源一旦完成就可以避免捆绑 数据库资源。
在已关闭的Statement对象上调用close方法无效。
注意:当Statement对象关闭时,它的当前ResultSet对象(如果存在)也将关闭。
考虑以下情况
PreparedStatement
在此示例中, MyConnector databaseConnector = DBManager.instance().getConnector();
Connection con = databaseConnector.getConnection(); // returns java.sql.Connection
PreparedStatement pstmt = null;
try {
pstmt = con.prepareStatement("some query");
...
} finally {
if (pstmt != null)
pstmt.close();
}
也会关闭pstmt.close()
?
答案 0 :(得分:12)
关闭Statement
不会关闭Connection
。但是,关闭Connection
将关闭Statement
。
这样想:
关闭Connection
会自动关闭其中包含的Statement
个和任何ResultSet
。
但是,如果可能的话,最好还是手动关闭所有三个(ResultSet
后跟Statement
后跟Connection
)。
答案 1 :(得分:2)
注意:当 Statement 对象关闭时,其当前的 ResultSet [但不是Connection]对象(如果存在)也会关闭。
它不会关闭连接,只关闭结果集对象。
答案 2 :(得分:0)
如果您使用的是Java 7和 try-with-resources
,则无需担心关闭连接或任何Statement
或ResultSet
。< / p>
try (Connection conn = databaseConnector.getConnection();
PreparedStatement pstmt = conn.prepareStatement("some query")) {
...
} catch (Exception e) {
...
}