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

(OraclePreparedStatement) myConnection.preparedStatement(

“ INSERT INTO customers “ +

“ (customer_id, first_name", last_name, dob, phone) VALUES (" +

“?, ?, ?, ?, ?” +

“ ) ’’ '

);

Обратите внимание, что объект PreparedStatement, возвращенный методом

PreparedStatement(), приведён к объекту OraclePreparedStatement и

сохранён в myPrepStatement.

Н а е л е д у ю щ е м ш а г е н у ж н о п р и в я з а т ь о б ъ е к т ы oracle.sqlKmyPrepStatement,

используя методы установки. Сюда входит присвоение значений “заполнителям”,

помеченным в myPrepStatement вопросительными знаками. Также

как для привязки переменных Java к объекту PreparedStatement используются

методы установки типа SETInt(), SETFloatO, SETStringO и SETDateO,

методы установки типа SETNUMBER ( ) , SETCH AR ( ) и SETDATE() используются для

привязки объектов oracle.sql к объектам OraclePreparedStatement.

Следующий пример иллюстрирует, как связать объекты customerld,

firstName, lastName и dob с myPrepStatement, используя соответствующие

методы установки:

□ myPrepStatement.setNUMBER(1, customerld);

myPrepStatement.setCHAR(2, firstName);

myPrepStatement.setCHAR(3, lastName);

myPrepStatement.setDATE(4, dob);

Чтобы задать значение NULL базы данных для столбца phone (который

соответствует пятому знаку вопроса (?) в операторе myPrepStatement), используется

метод S ETN U L L ():

□ myPrepStatement.setNull(5, OracleTypes.CHAR);

Целая (int) константа OracleTypes.CHAR используется для того, чтобы

показать, что тип столбца базы данных совместим с типом oracle.sql.CHAR,

используется oracle, sql. CHAR, так как столбец phone определен как тип базы

данных VARCHAR2.

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

Единственное, что еще остается сделать, - это выполнить оператор

INSERT, используя метод execute():

П myPrepStatement.executeO;

Этот оператор добавит в таблицу customers новую строку.

Использование объекта OracleResultSet

Интерфейс OracleResultSet реализуе^ауа^ТКевикБщ и содержит методы

получения (g e t), способные обрабатывать объекты oracle.sql. В этом разделе

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

добавленной в таблицу customers строки.

Сначала необходимо создать объект JDBC Statement, с помощью которого

можно выполнить оператор SQL:

□ Statement myStatement = myConnection.createStatement();

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

customerResultSet, который заполняется значениями столбцов ROWID,

customer_id, flrst_name, last_name, dob и phone для покупателя № 6:

□ OracleResultSet customerResultSet =

(OracleResultSet) myStatement.executeQuery(

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

“FROM customers “ +

“WHERE customer_id = 6”

);

Выше были определены следующие объекты oracle.sqclass="underline" rowid, customerld,

firstName, lastName и dob. Они могут быть использованы для хранения значений

первых пяти столбцов. Чтобы записать значение столбца phone, нужно

создать объект oracle.sql.CHAR:

□ oracle.sql.CHAR phone = new oracle.sql.CHAR(«», myCharSet);

Объект OracleResultSet содержит целый ряд методов получения для

возврата различных объектов oracle.sql. Метод getCHAR( )используется для

получения oracle, sql. CHAR, getNUMBERO - для получения oracle, sql. NUMBER,

getDATE() - для получения oracle, sql. DATE и т. д.

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

методы для копирования значений столбцов в объекты

rowid,customerld,firstName,lastName,dob и phone:

□ while (customer.ResultSet.next()) {

rowid = customerResultSet.getROWID(“ROWID” );

customerld = customerResultSet.getNUMBER(“customer_id” );

firstName = customerResultSet.getCHAR(“ first_name” );

lastName = customerResultSet.getCHAR(“ last_name” );

dob = customerResultSet.getDATE(“dob");

phone = customerResultSet.getCHAR(“phone” );

System.out.println(“ rowid = “ + rowid.stringValueO);

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

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

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

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

594 Глава 15

S y s tem .o u t .p r in t ln ( “ phone = " + phone);

} / / end of while loop

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

s t r ingVa lueO, конвертирующие объекты rowid, customerld, firstName, lastName,

dob и phone в значения Java String. Для объектов firstName, lastName и phone в

примере их имена просто включены напрямую в вызовы System.out.println().

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

выражения, показанные в предыдущих разделах.

Пример программы: BasicExample3.java

Следующая программа BasicExample3.java содержит выражения, показанные

в предыдущих разделах:

Программа BasicExample3.java показывает, как использовать расширения

JDBC Oracle

для добавления новой строки в таблицу customers и выводит эту строку

*/

/ / импортируйте пакеты_ JQBC

import j a v a . s q l . *;

/ / импортируйте пакеты расширений JDBC от Oracle

import o r a c l e . s q l . *;

import o ra c le , jdbc. *;

p u b lic c la s s BasicExample3 {

p u b lic s t a t i c void main (S t r in g args [ ] ) {

t r y {

/ / зарегистрируйте драйверы JDBC Oracle

Dr iv e rManage r . reg is te rDr iv e r (

new o r a c le . jd b c .O ra c leD r iv e r ( )