Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

1.5 Выборка результатов

Рассмотрим теперь, как выбрать результаты запроса, если они выдаются в виде набора java.sql.ResultSet. Интерфейс ResultSet, входящий в состав интерфейса JDBC, как подразумевает его наименование, специально предназначен для выборки результатов.

Интерфейс Statement, входящий в состав интерфейса JDBC, представляет собой основной интерфейс взаимодействия с базой данных. Он расширяется за счет интерфейсов CallableStatement и PreparedStatement. Интерфейс ResultSet можно получить через интерфейс Statement или PreparedStatement (интерфейс CallableStatement в основном используется для процедурных расширений и рассматривается в последующих разделах.).

Интерфейс Statement следует использовать для создания интерфейса ResultSet только в том случае, если запрос SQL является статичным. А для параметризованных запросов SQL или часто выполняемых запросов следует использовать интерфейс PreparedStatement. В том случае, когда используется интерфейс PreparedStatement, имеется возможность выполнить предкомпиляцию операторов SQL и привязать план доступа к конкретной базе данных. Интерфейс PreparedStatement содержит методы установки значений параметров до выполнения. Это дает возможность многократно выполнять предварительно скомпилированные операторы SQL с разными значениями параметров, что может привести к существенному повышению производительности, в особенности при сложных запросах.

Независимо от того, осуществляется ли непосредственное (с помощью интерфейса Statement) или подготовленное (с помощью интерфейса PreparedStatement) выполнение операторов SQL, возвращаемый интерфейс ResultSet оказывается одним и тем же. Доступ к строке осуществляется с помощью метода next() интерфейса ResultSet. Этот метод возвращает логическое значение, которое является истинным до тех пор, пока не будут считаны все строки. Кроме того, он может активизировать исключение SQLException, если возникнет ошибка.

После того как курсор будет установлен на строку, значения столбцов выбираются с помощью одного из методов get() интерфейса ResultSet (getStringO, getInt() и др.). Каждый из этих методов воспринимает для выборки индекс столбца с отсчетом от единицы или имя столбца. Следующий код служит расширением примера запроса, представленного в приведенных выше фрагментах кода:

String lastName="";

String firstName="";

float salary=0;

while(rset.next())// цикл по строкам результата запроса

{

// получение значений столбцов результата запроса

lastName=rset.getString(1); // или lastName=rset.getString("LAST");

firstName=rset.getString(2); // или firstName=rset.getString("FIRST");

salary=rset.getFloat(3); // или salary=rset.getFloat("SALARY");

// выполнить что-либо по использованию полученных значений

. . . . . . . . . . .

}

rset.close(); // освобождение результата запроса

Рекомендуется закрывать результирующий набор, как только в нем отпадает необходимость. Метод close() применяется также в интерфейсах Statement и PreparedStatement. Однако, возможно, потребуется оставить интерфейсы Statement открытыми для последующих выполнений операторов SQL, поскольку их закрытие освобождает все связанные с ними ресурсы. Если ссылка на интерфейс Statement становится недействительной, метод close() вызывается автоматически в процессе сборки мусора. Вызов метода close() до определения недействительности ссыкли гарантирует немедленное освобождение внешних ресурсов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]