jdbc Как правильно закрывать соединение
Как правильно закрывать соединение? сейчас я делаю это так
try {
PreparedStatement stQ = null;
String query2 = "";
stQ = conQ.prepareStatement(query2);
rsQ = stQ.executeQuery();
while (rsQ.next()) {
}
} catch (SQLException e) {
e.printStackTrace();
conQ.close();
System.out.println(conQ.isClosed());
}finally {
conQ.close();
System.out.println(conQ.isClosed());
}
return
Нужно ли прописывать close() и в cath и finally блоках? Правильно ли я его впринципе закрываю?
и сколько времени длится само закрытие этого соединения? В данный момент, я выполняю метод каждые 10 секунду( для теста) через пару минут вылетает ошибка о том, что достигнуто максимально кол-во подключений. будет ли такой же итог, если я буду вызывать метод раз в 5 минут?
Ответы (1 шт):
Начиная с 7-й версии Java, в ней появился новый оператор try-with-resources (try с ресурсами). Он создан как раз для того, чтобы решать проблему с обязательным вызовом метода close(). В общем случае выглядит он довольно просто:
try(
FileInputStream input = new FileInputStream(src);
FileOutputStream output = new FileOutputStream(dest))
{
byte[] buffer = input.readAllBytes();
output.write(buffer);
}
Из официальный документации:
public interface AutoCloseable
An object that may hold resources (such as file or socket handles) until it is closed. close()The method of an AutoCloseable object is called automatically when exiting a try-with-resources block for which the object has been declared in the resource specification header. This construction ensures prompt release, avoiding resource exhaustion exceptions and errors that may otherwise occur.