Язык SQL

Выполнение других операторов


Выполнение отдельного SQL-оператора может в принципе приводить к множественным результатам. В этом случае для выполнения оператора следует использовать метод execute. Этот метод также используется в ситуации, когда неизвестно, возвращает ли оператор в качестве результата таблицу (ResultSet).

Метод execute дает возможность оператору возвращать несколько значений. Каждое возвращаемое значение является или таблицей ResultSet, или числом строк На 8.12 приведен пример использования метода execute. Вызов метода execute (строка 1) возвращает значение типа boolean, показывающее, является ли первое возвращаемое значение таблицей ResultSet. Со строки 2 начинается цикл, извлекающий один за другим все результаты. В конце цикла (строка 14) вызывается метбд getMoreResult для определения того, является ли следующий результат таблицей ResultSet.

Внутри цикла, если isResultSet является истинным (true), вызывается метод getResultSet для загрузки множества ResultSet (строка 7). Если isResultSet ложно (false), то вызывается метод getUpdateCount для загрузки числа строк (строка 10). Если число строк равно —1 (строка 11), то больше результатов нет, и цикл завершается. Эти попеременные вызовы методов getResultSet и getUpdateCount продолжаются до тех пор, пока метод getResultSet не возвратит значение “ложно” или метод getUpdateCount не возвратит значение “—1”, как в строке 11.

1 boolean isResultSet; // истинно, если результат является

// множеством ResultSet

2 resultSet result; // текущее состояние resultSet

3 int rowcount; // текущее значение счетчика строк

4 isResultSet = stmt.execute(sqlStatement);

5 while (true) { // цикл по всем результатам

6 if (isResultSet){ // возврат результирующего множества

7 result = stmt.getResultSet();

8 //здесь помещается код для обработки результирующего множества

9 } else { //этот результат не является множеством

ResultSet

10 rowcount = stmt.getUpdateCount() ;

11 if (rowcount ==-1) break; // больше нет результатов

12 //здесь помещается код для обработки счетчика строк -

13 }

14 isResultSet = stmt.getMoreResults());//извлекает следующий результат

15 }

8.12. Java-код для обработки SQL-onepamopa с несколькими возможными результатами

Комментарии закрыты