Когда закрывать оператор при использовании jdbc - PullRequest
0 голосов
/ 17 сентября 2011

Я использую odbc для подключения базы данных MySQL в Java

Я пишу функцию "ExecuteQuery", она принимает строковый параметр в качестве оператора sql и возвращает его набор результатов. Однако когда я должен закрыть объект оператора? Если я закрою его в функции ExecuteQuery, возвращаемый набор результатов также будет закрыт. Если я не закрываю его, происходит утечка памяти, так как у меня нет ссылки на объект оператора в вызывающей стороне. Спасибо

1 Ответ

3 голосов
/ 17 сентября 2011

Вы ошибаетесь.Если вам действительно нужна такая функция (что сомнительно), сделайте так, чтобы она принимала Statement в качестве параметра, и создайте отдельную функцию для создания и настройки этого оператора.Затем вы можете обернуть свою функцию и ResultSet работать в блоке try..finally и закрыть оператор в finally.

Например,

Statement statement = getStatement();
try {
    ResultSet rs = executeQuery(statement, query);
    ...
} finally {
    statement.close();
}

Однако, если вы столкнулись с такимпроблемы, вы можете пересмотреть свою архитектуру.Взгляните, например, на Hibernate .

...