![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| akula84 |
|
|||
|
Unregistered |
Вопрос возник такой.
Допустим я хочу при помощи JDBC послать к БД запрос. Запрос состоит из нескольких строк(то есть вроде надо использовать addBatch()). Но результатом запрос является некоторая выборка из нескольких таблиц(то есть нужен ResultSet) Можно как-нибудь связать эти две вещи? Заранее спасибо за помощь. Если что не понятно, объясню |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Не совсем понял
Добавляшь квери чeрез addBatch, делаешь execute, а затем получаешь ResultSet : ResultSet result = statement.getResultSet(); -------------------- |
|||
|
||||
| akula84 |
|
|||
|
Unregistered |
Результатом Batch() не может быть ResultSet...
А есть вариант как это можно обойти? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Но если не может, то откуда ты хочешь взять ResultSet? Да и методa Batch() нету.
Это сообщение отредактировал(а) Domestic Cat - 10.11.2004, 19:54 -------------------- |
|||
|
||||
| akula84 |
|
|||
|
Unregistered |
А какое ест вообще решение такой задачи:
Есть у нас файлик,содержащий запрос к sql серверу. Запрос состоит из нескольких последовательных операций, в результате чего получаем некий набор необходимых нам строк. Как лучше всего получить эти строки. Не будем же мы каждую строчку отдельно выполнять? или другого выхода нет? Надеюсь удалось объяснить проблемку |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Вообще-то в апи у каждого batch-метода подписано:
Кромe того, чем тебe нe подходит statement.getResultSet() после выполнения statement.executeBatch() ? -------------------- |
|||
|
||||
| akula84 |
|
|||
|
Unregistered |
Ошибку выдает следующую
java.sql.BatchUpdateException: [TDS Driver]Invalid Batch SQL Expression. A ResultSet was produced. |
|||
|
||||
| Zandr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
Я это к тому, что ты бы хоть привел список запросов, добавляемых в задание. А еще попробуй перед добалением запроса выводить его на консоль. И смотри какой запрос будет упрямиться.
Есть мнение, что если ты добавляешь запросы в очередь - то вывод (ризалт сет) должен давать только последний. |
||||
|
|||||
| Guest |
|
|||
|
Unregistered |
Вот код , выдаваемая ошибка написана выше
|
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 1 Всего: 21 |
Из документации:
executeBatch public int[] executeBatch() throws SQLException ... Throws BatchUpdateException ... if one of the commands sent to the database ... attempts to return a result set. т.е. в butch не должно быть команд, возвращающих ResultSet, в данном случае - типа SELECT, что, собственно, уже прозвучало
Так что не SELECT команды из файлика можно объединить в butch и выполнить, а потом выполнить ПО ОДНОЙ команды типа SELECT - все равно, насколько мне известно, нет метода, возвращающего массив ResultSet[] Обходной путь: Заставить БД выполнить хранимую процедуру (анонимный блок?), которой передать все команды типа SELECT. Хранимая должна записать результаты выполнения в промежуточную таблицу, которую и запросить потом на предмет получения некого набора необходимых нам строк, возможно, с последующим их парсингом. -------------------- Хотите поговорить об этом? |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |