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

1.3 Посылка статичных sql-запросов

Перед тем как выполнить SQL-запрос, необходимо создать его создать. Объект запроса класса java.sql.Statement получается посредством вызова, например, метода createStatement() для экземпляра соединения. Затем после создания текста запроса егоследует передать базе данных, где он разбирается, оптимизируется и выполняется. Для посылки запроса используется один из методов интерфейса Statement:

ResultSet executeQuery(String sql);

int executeUpdate(String sql);

boolean execute(String sql);

Метод, выбираемый для посылки запроса базе данных, зависит от типа запроса и типа возвращаемого значения. Если запрос возвращает в виде результата некую таблицу строк данных, то необходимо использовать executeQuery(). В этом случае запрос - это чаще всего статический SQL-запрос SELECT. Текст запроса просто передается как строчный аргумент. Этот метод возвращает объект набора результатов java.sql.ResultSet в виде таблицы.

Если запрос не возвращает ничего (это не то же самое, что возвращение нуля строк) или возвращает целочисленное значение, как в случае с SQL-операторами INSERT, UPDATE или DELETE, нужно использовать executeUpdate(). Вызов возвращает целочисленное значение или нуль для инструкций, не возвращающих ничего.

Когда SQL-запрос возвращает более чем один результат, необходимо использовать execute() для выполнения этого запроса.

Приведем пример создания и выполнения запроса:

Statement stmt=conn.createStatement();

// создание запроса

// создание текста запроса (выдать результат в виде таблицы, в столбцах которой помещены

// а) фамилии, б) имена, в) оклады всех людей, информация о которых хранится в таблице PAYROLL)

String sqlQuery="select LAST, FIRST, SALARY from PAYROLL";

ResultSet rset=stmt.executeQuery(sqlQuery);

// выполнение запроса и получения результата запроса - таблицы выбранных строк

// использование результата запроса - объекта rset

. . . . . . .

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

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

Приведем еще один пример создания и выполнения запроса. Этот запрос изменяет таблицу базы данных (обновляет данные) и, поэтому, требует фиксации изменений методом commit() для объекта соединения:

Statement stmt=conn.createStatement();

// создание запроса

String sqlQuery="update PAYROLL set SALARY=SALARY*1.1 where SALARY < 1000";

// создание текста запроса

int=stmt.executeUpdate(sqlQuery);

// выполнение запроса и получения результата запроса - число строк, в которых произведено обновление

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

. . . . . . .

conn.commit();

// фиксация изменений

stmt.close();

// освобождение ресурсов запроса

Заметим, что если не требуется зафиксировать сделанные изменения, а, наоборот, необходимо отменить результаты выполнения запроса, следует воспользоваться следующим вызовом:

conn.rollback();

// отмена фиксации результатов выполнения запроса

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