PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = getConnection().prepareStatement(sql);
if (ps != null) {
ps = doSomething(ps);
ps.executeUpdate();
}
} finally {
if (ps!=null) {
ps.close();
}
}
private PreparedStatement doSomething(PreparedStatement ps) {
ps.setString(1, "test");
}
「執行更新只被調用一次」。字符串「sql」在不同的條件下是不同的,並且會有不同數量的綁定變量,方法doSomething在子類中有不同的實現來設置綁定變量。是否有一個資源(準備語句)在此代碼中泄漏?
Eclipse抱怨說這是潛在的泄漏,因爲重新分配準備好的語句。這裏有資源泄漏嗎?
(1)考慮試用資源。 (2)爲什麼'doSomething'需要返回語句,而不是像本例中那樣修改它? – chrylis
這是因爲doSomething被覆蓋以在不同的子類中做不同的事情。 – gaenshr
這並不回答這個問題。它做了什麼不能是'空白'? – chrylis