(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 ( )