Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Закрывать ли ResultSet между executeQuery ? / 15 сообщений из 15, страница 1 из 1
11.12.2014, 16:59
    #38831691
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
Нужно ли закрывать ResultSet между executeQuer'ями?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
rs = ps.executeQuery(sql);
...
// выборка
...
rs.close(); // ннннада?
rs = ps.executeQuery("SELECT FOUND_ROWS()");
...
//закрытие всех ресурсов
...
Рейтинг: 0 / 0
11.12.2014, 17:01
    #38831696
DEVcoach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
Да.
...
Рейтинг: 0 / 0
11.12.2014, 17:08
    #38831720
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
В finally!
...
Рейтинг: 0 / 0
11.12.2014, 17:11
    #38831725
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
хм, мнения несколько разделились
...
Рейтинг: 0 / 0
11.12.2014, 17:19
    #38831739
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
java.sql.ResultSet :A ResultSet object is automatically closed when the Statement object that generated it is closed, re-executed, or used to retrieve the next result from a sequence of multiple results .Таким образом: в finally - обязательно, при повторных вызовах executeQuery - избыточно.
...
Рейтинг: 0 / 0
11.12.2014, 17:29
    #38831762
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
тоже нашел это

можно конечно и в finaly не закрывать, если написано when the Statement object that generated it is closed , но это при условии, что Statement закроется успешно

но так как нет гарантии, что Statement всегда будет успешно закрыт, то получается нужно закрывать явно
...
Рейтинг: 0 / 0
11.12.2014, 17:33
    #38831764
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
так то оно так, но эклипс говорит, что Resource leak: 'rs' is not closed at this location , если закомментировать закрытие rs между executeQuery
...
Рейтинг: 0 / 0
11.12.2014, 17:40
    #38831780
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
rema174хм, мнения несколько разделилисьиспользовать try-with-resource и забыть про close()
...
Рейтинг: 0 / 0
11.12.2014, 17:48
    #38831793
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
Usmanиспользовать try-with-resource и забыть про close()Это и есть "в finally"
...
Рейтинг: 0 / 0
11.12.2014, 18:33
    #38831838
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
Закрывать ResultSet это ближе к специфике JDBC чем к конкретным реализациям драйвера.
В скобках ... в методе close() может даже ничего не быть.
...
Рейтинг: 0 / 0
11.12.2014, 18:34
    #38831845
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
Basil A. SidorovUsmanиспользовать try-with-resource и забыть про close()Это и есть "в finally"
Неа. В блоке try с ресурсами приседаний делается больше, по сравнению с обычным вызовом close() в блоке finally.
...
Рейтинг: 0 / 0
11.12.2014, 19:32
    #38831897
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
при использовании try-with-resources эклипс не ругается на незакрытый rs между executeQuery
и оракловцы в туториалах не помещают rs в try-with-resources и не закрывают, пожалуй и я так буду делать
...
Рейтинг: 0 / 0
12.12.2014, 04:20
    #38832035
Герой дня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
тут описано, как правильно http://habrahabr.ru/post/178405/
...
Рейтинг: 0 / 0
12.12.2014, 06:28
    #38832048
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
avp.mkНеа. В блоке try с ресурсами приседаний делается больше, по сравнению с обычным вызовом close() в блоке finally.Эти приседания делает компилятор и, насколько я помню, он не делает ничего такого, чего нельзя сделать руками. Так что, всё-таки, "в finally".
...
Рейтинг: 0 / 0
12.12.2014, 07:39
    #38832081
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрывать ли ResultSet между executeQuery ?
Basil A. Sidorovavp.mkНеа. В блоке try с ресурсами приседаний делается больше, по сравнению с обычным вызовом close() в блоке finally.Эти приседания делает компилятор и, насколько я помню, он не делает ничего такого, чего нельзя сделать руками. Так что, всё-таки, "в finally".
да, только если правилно всё делать в finally, то там тоже придётся вставлять блок try...
..или делать проверки на null. и огород получается ещё тот.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Закрывать ли ResultSet между executeQuery ? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]