Выбрать главу

Возвращаемый методом getConnection объект Connection записывается

в myConnection. Вы можете передать методу getConnection в качестве

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

примере:

□ Connection myConnection = myDataSource.getConnection(

“ s t o re ” , “ store_password"

);

В этом случае переданные имя пользователя и его пароль заменят ранее

определенные в myDataSource значения этих параметров. Это значит,

что подключение к базе данных будет выполнено от лица пользователя

store с паролем store_password, а не от лица s c o t t и t ig e r , чьи параметры

были заданы в предыдущем разделе.

После создания объекта Connection его можно использовать для создания

объекта JDBC Statement.

Создание объекта JDBC Statement

Теперь вам требуется создать объект Statement класса java.sql.Statement.

Объект Statement используется для представления таких операторов SQL,

как операторы DML (SELECT, INSER, UPDATE или DELETE) или операторы

DDL (например, CREATE TABLE). Позже в этой главе вы научитесь создавать

оба этих типа операторов.

Для создания объекта Statement используется метод createStatement()

объекта Connection. В следующем примере создается объект Statement с

именем myStatement, для чего используется метод createStatement() объекта

myConnection, созданного в предыдущем разделе:

□ Statement myStatement = myConnection.createStatement();

В зависимости от того, какой оператор SQL вы хотите выполнить, можно

использовать различные методы класса Statement. Если вы хотите выполнить

запрос, используйте метод executeQuery(). Если вы хотите выполнить

операторы INSERT, UPDATE или DELETE, нужно использовать метод

executeUpdate(). Если вы не знаете заранее, какой оператор SQL нужно будет

выполнить, можно применить метод execute(), который может быть

использован для выполнения любых выражений SQL.

560 Глава 15

Для представления операторов SQL существует еще один класс JDBC,

который называется PreparedStatement. Он предлагает более широкие

функциональные возможности, чем класс Statement. Мы обсудим класс

PreparedStatement после того, как я объясню использование класса

Statement.

После создания объекта Statement вы готовы создавать операторы SQL,

используя JDBC.

Получение строк из базы данных

Для выполнения с помощью JDBC оператора SELECT необходимо использовать

метод executeQue гу ( ) объекта Statement, который принимает строку

(String) Java, содержащую текст оператора SELECT.

Поскольку оператор SELECT может возвратить более одной строки, метод

executeQuery() возвращает объект, в котором хранятся строки, возвращенные

оператором SELECT. Этот объект известен как результирующий

набор (resulting SET) JDBC и относится к классу java.sql.ResultSet. При использовании

объекта ResultSet для чтения строк из базы данных необходимо

выполнить три шага.

1. Создать объект ResultSet и заполнить его, используя оператор SELECT.

2. Прочесть значения столбцов из объекта ResultSet, используя методы

получения.

3. Закрыть объект ResultSet.

Ниже приводятся примеры, иллюстрирующие применение объекта

ResultSet для получения строк из таблицы customers.

ТТТяг 1: Создание и заполнение объекта ResultSet

Сначала нужно создать объект ResultSet и заполнить его, используя оператор

SELECT, выбирающий из базы данных требуемые строки. В следующем

примере создается объект ResultSet с именем customerResultSet и заполняется

с помощью оператора SELECT, который выбирает столбцы customer_id,

first_name, last-name, dob и phone для каждой строки таблицы customers:

□ ResultSet customerResultSet = myStatement.executeQuery(^

“SELECT customer_id, first_name, last_name, dob, phone “ +

“ FROM customers”

);

После выполнения этого оператора объект будет содержать значения

столбцов для строк, возвращенных оператором SELECT. Теперь можно использовать

объект ResultSet для получения доступа к значениям столбцов

для выбранных строк. В этом примере customerResultSet будет содержать

пять строк, выбранных из таблицы customers.

Поскольку метод execute() принимает на вход строку (String) Java, можно

создавать операторы SQL непосредственно во время выполнения программы.

Это означает, что в JDBC можно создавать действительно мощные

операторы SQL. Например, во время выполнения программы можно внести

в строку, содержащую фразу WHERE оператора SELECT, имя пользователя

Выполнение SQL с использованием Java 561

программы или ввести целиком весь текст оператора SELECT. Следующий

пример иллюстрирует, как создается и добавляется к запросу, выполняемому

другим объектом ResultSet, фраза WHERE:

□ S t r in g whereClause = «WHERE customer_id = 1»;

ResultSet customerResultSet2 = myStatement.executeQuery(

“SELECT customer_id, first_name, last_name, dob, phone” +

“ FROM customers” +