Рассмотрим следующий кодавтоматическое закрытие множества результатов в Java SQL
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, закрытие ResultSets, когда заявление закрыто, не всегда было в спецификации JDBC (время назад, например, 1.2ish). Вероятно, есть драйверы, которые не делают это должным образом. –