问题描述
你所做的是完美的,非常好的练习。
我说它的好习惯的原因......例如,如果由于某种原因您正在使用“原始”类型的数据库池并且您调用connection.close()
,则连接将返回到池中并且ResultSet
/Statement
将永远不会关闭,然后您会遇到很多不同的新问题!
所以你不能总是指望connection.close()
清理。
我希望这有帮助 :)
解决方法
使用后关闭所有 JDBC 资源据说是一个好习惯。但是如果我有以下代码,是否需要关闭Resultset和Statement?
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = // Retrieve connection
stmt = conn.prepareStatement(// Some SQL);
rs = stmt.executeQuery();
} catch(Exception e) {
// Error Handling
} finally {
try { if (rs != null) rs.close(); } catch (Exception e) {};
try { if (stmt != null) stmt.close(); } catch (Exception e) {};
try { if (conn != null) conn.close(); } catch (Exception e) {};
}
问题是连接的关闭是否可以完成这项工作,或者它是否会留下一些资源在使用中。