考慮下面的代碼自動關閉結果集
ResultSet rs = null;
Statement st = null;
try {
//do somehting
} catch (Exception e){
//do something
} finally {
if(st != null){
try {
st.close();
} catch (SQLException e) {
log.error("Exception while closing statement: " + e);
}
}
}
的問題是,當我們關閉語句,將它關閉的結果集,以及還是我們需要顯式地關閉結果這樣設置
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
log.error("Exception while closing result set: " + e);
}
}
我認爲關閉語句將自動關閉結果集,但FindBugs的拋出以下警告,如果我沒有明確關閉的結果集
這種方法可能無法清理java.sql.ResultSet中
任何想法,那麼爲什麼FindBugs報告這個警告? – comatose
這可能是遺留問題。 IIRC,當Statement被關閉時關閉ResultSet並不總是在JDBC規範中(前一個looong,如1.2ish)。有可能有司機不正確地做。 –