回顾我的代码,我发现我偶尔会写:
ResultSet rs = conn.createStatement().executeQuery("select * from main");
//snip
rs.close();
有时我写过
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("Select * from main");
//snip
rs.close();
st.close();
在第二个代码段中,Statement关闭的比较明显,但在第一个代码段中是否也关闭了? conn.createStatement() 返回一个语句对象,但是当它像这样实例化时,我看不到任何简单的方法来在完成后关闭它。我是否应该只重写各种代码以使用方法 #2?
最佳答案
一个好的做法是将 rs.close()
和 st.close()
放在您的 finally 子句中。
Statement st;
ResultSet rs;
try {
st = connection.createStatement(...);
rs = st.executeQuery();
}
catch (JdbcErrorsExceptionsAndFoo exception) {
// yadda yadda
}
finally {
if (rs!= null) {
rs.close();
}
if (st != null) {
st.close();
}
}
关于java - 此 jdbc 资源是否已关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7127849/