【发布时间】:2018-06-26 14:28:19
【问题描述】:
Eclipse 显示警告消息“资源泄漏,preparedstatement 未在以下位置关闭”
在我看来,finally 块负责关闭preparedstatement 和rs 对象。知道为什么 eclipse 仍然抱怨资源泄漏吗?
String ruleGrpId = null;
int finalRuleID = 0;
String saveRule1 = "INSERT INTO ..";
String saveRule2 = "INSERT INTO ";
String saveRule3 = "select ..._name = ?";
PreparedStatement preparedstatement = null;
ResultSet rs = null;
try {
if (objSomeRule.getRule() == 0) {
preparedstatement = con.prepareStatement(saveRule1);
preparedstatement.setString(1, ruleId);
preparedstatement.executeUpdate();
//Eclipse complains here
preparedstatement = con.prepareStatement(saveRule2);
preparedstatement.setInt(1, ruleID_2);
preparedstatement.setString(2, ruleID_3);
rs = preparedstatement.executeQuery();
if(rs.next()){
finalRuleID = rs.getInt(1);
}else{
//complains here
preparedstatement = con.prepareStatement(saveRule3);
preparedstatement.setString(1, ruleID_4);
//complains here
rs = preparedstatement.executeQuery();
if(rs.next()){
finalRuleID = rs.getInt("rulegroup_id");
}
}
objSomeRule.setRuleID(finalRuleID);
}
} finally {
if(preparedstatement != null){
preparedstatement.close();
}
if(rs != null){
rs.close();
}
}
return finalRuleID;
}
【问题讨论】:
标签: java eclipse jdbc memory-leaks