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

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

g e tln t(l). При вызове метода можно также использовать имя столбца, так

что для получения того же самого значения можно использовать

getInt(«customer_id»).

Совет Если вместо положения столбца в методе используется его имя, это делает программу

более удобочитаемой.

Чтобы получить значение столбца first_name, являющегося вторым

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

getSt ring(2) или getString(“ first_name” ). Эти же методы можно использовать

и для получения значений столбцов last_name и phone, так как они

тоже являются строками текста. Для получения значения столбца dob необходимо

использовать getDate(4) или getOate(“dob” ). Чтобы в действительности

прочесть хранящиеся в объекте ResultSet значения, вы должны

вызывать методы get, используя объект ResultSet.

Поскольку объект ResultSet может содержать более одной строки, JDBC

предоставляет метод next(), позволяющий последовательно перебирать

хранящиеся в объекте ResultSet строки. Метод next ( ) вызывается для получения

первой строки в объекте ResultSet, а при каждом последующем вызове

next ( ) происходит к следующей строке. Когда строки в объекте

ResultSet закончатся, при вызове метода next() будет возвращено логическое

значение false (ложь).

Рассмотрим объект ResultSet, носящий имя customerResultSet, в котором

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

customer_id, first_name, last_name, dob и phone таблицы customers.

В следующем примере показан цикл while, читающий значения столбцов

из customerResultSet в определенные ранее объекты customerld, firstName,

lastName, dob и phone:

П while (customerResultSet.next()) {

customerld = customerResultSet.getInt(“customer_id” );

firstName = customerResultSet.getString(“ first_name” ) ;

lastName = customerResultSet.getString(“ last_name” );

dob = customerResultSet.getDate(“dob” ):

phone = customerResultSet.getStringC'phone");

System.out.println(“customerId = “ + customerld);

System.out.println(“firstName = “ + firstName);

System.out.println(“ lastName = “ + lastName);

System.out.println(“dob = “ + dob);

System.out.println(“phone = “ + phone);

} // end of while loop

Когда в объекте customerResultSet не остается больше строк для чтения,

метод next() возвращает логическое значение false и выполнение цикла

прекращается. В данном примере методам get передаются для чтения

имена столбцов, а не числа, указывающие на их положение. Значения столбцов

были скопированы в переменные Java и в объекты; например, значение,

возвращаемое из customerResultSet.getInt(«customer_id»), копируется

564 Глава 15

в переменную customerld. Подобное копирование делать не обязательно:

можно просто использовать метод get в тех местах, где потребуется такое

значение. Однако, как правило, оказывается лучше выполнить такое копирование,

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

если требуется получить одно и то же значение несколько раз.

Шаг 3: Закрытие объекта ResultSet

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

метод c lo s e (). В следующем примере закрывается объект

customerResultSet:

□ customerResultSet.close();

Примечание Важно не забывать закрывать объекты ResultSet после окончания работы с

ними. Это послужит гарантией того, что они будут запланированы для участия в процедуре

сборки мусора. ___________________

Теперь, когда вы узнади, как получать строки, я покажу вам, как добавлять

строки в таблицу базы данных при помощи JDBC.

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

Для добавления строк в таблицу используется оператор INSERT языка SQL.

Есть два основных способа выполнения оператора INSERT с использованием

JDBC:

■ использование метода executellpdate(), определенного в классе

Statement,

■ использование метода execute(), определенного в классе

PreparedStatement (об этом классе см. ниже в данной главе).

Примеры этого раздела иллюстрируют, как добавить строку в таблицу

customers. Значения столбцов customer_id, first_name, last_name, dob и

phone для этой новой строки устанавливаются равными 6; Jason; Price;

February 22, 1969 и 800-555-1216, соответственно.

Для добавления этой новой строки используется тот же самый объект

Statement, что был определен ранее (myStatement), вместе с теми же переменными

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

таблицы customers в предыдущем разделе. В первую очередь эти переменные

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

столбцы базы данных в таблице customers:

П customerld = 6;

firstName = “Jason” ;

lastName = “Red” ;

dob = java.sql.Date.value0f(“1969-02-22");

phone = “800-555-1216";

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

Примечание Класс java.sql.Date хранит даты, используя формат YYYY-MM-DD, где YYYY -