У меня есть служебный класс JDBC, который содержит экземпляры Resultset, Statement и Connection в качестве глобальных ссылок. Этот класс имеет два основных метода, таких как «выполнить» (имеет некоторые параметры) и «закрыть» и внутри выполнить, вышеприведенные экземпляры создаются и назначаются и, наконец, возвращает созданный набор результатов.
И метод «закрыть» закрывает все открытые соединения для набора результатов, заявления и соединений просто так.
public void close() {
if (rs != null) {
try {
rs.close();
} catch (SQLException sqlEx) {
sqlEx.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException sqlEx) {
sqlEx.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException sqlEx) {
sqlEx.printStackTrace();
}
}
}
И в моем клиентском приложении я создаю экземпляр утилиты и получаю набор результатов, как показано ниже.
ResultSet rs = dbutil.execute(strQuery,values);
и если я закрою набор результатов с помощью rs.close
и снова с помощью dbutil.close()
в своем клиентском приложении,
- произойдет ли утечка соединения или утечка памяти?
- что произойдет, если я буду использовать только
rs.close()
в своем клиенте? - Существуют ли какие-либо возможности для утечек соединения?
заранее спасибо