Запрос может вернуть множественные результаты. Это может произойти при выполнении хранимой процедуры или в базах данных, которые позволяют также выполнение множества операторов SELECT в одном запросе. Ниже показано, как можно получить все множественные наборы:
- Используйте метод execute для выполнения оператора SQL.
- Получите первый результат или обновите подсчет.
- Повторите вызов метода getMoreResults(), чтобы перейти к следующему результирующему набору. Этот метод автоматически закрывает предыдущий результирующий набор.
- Процедура завершается, когда заканчиваются результирующие наборы или обновленные подсчеты.
Методы execute и getMoreResults возвращает значение true, если следующим элементом в соединении является результирующий набор. Метод getUpdateCount возвращает значение -1, если следующим элементом в соединении не является обновление подсчета.
Следующий цикл проходит по всем результатам:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
boolean done = false; boolean isResult = stmt.execute(command); while(!done) { if(isResult) { ResultSet result = stmt.getResultSet(); // тут какие либо действия с result... } else { int updateCount = stmt.getUpdateCount(); if(updateCount >= 0) // какие либо действия с updateCount... else done = true; } isResult = stmt.getMoreResults(); } |
Кстати, метод boolean getMoreResults() получает следующий результат для следующего оператора. Возвращает значение true, если следующий результат существует, и он является результирующим набором.