/ / ОТРЕДАКТИРУЙТЕ В СЛУЧАЕ НЕОБХОДИМОСТИ
/ / создайте объект Connection и подключитесь к базе данных
/ / как пользователь store , используя тонкий драйвер JDBC Oracle
Connection myConnection = DriverManager.getConnection(
« jd b c :o ra c le : th in :@lo c a lh o s t :1521:0RCL»,
«store»,
«store_password»
);
/ / отключите режим автофиксации
myConnection. setAutoCommit( false);
/ / создайте объект oracle.sql.NUMBER
oracle.sql.NUMBER customerld = new oracle.sql.NUMBER(6);
in t cus tomer ldlnt = customerld. in tV a lu eO ;
S y s t em . o u t . p r i n t l n ( « c u s t om e r I d I n t = « + c u s t om e r l d l n t ) ;
/ / создайте два объекта oracle.sql.CHAR
o r a c le . s q l .C h a ra c te rS e t myCharSet =
Cha ra c te rS e t .make(CharacterSet. US7ASCII_CHARSET);
oracle.sql.CHAR firstName = new oracle.sql.CHAR(«Jason», myCharSet),
S t r in g firs tNameS tr ing = f i r s tN am e . s t r in g V a lu e ( );
Выполнение SQL с использованием Java 595
Sy s tem.o u t .p r in t ln (« f ir s tN ame S t r in g = « + f irs tNameS tr ing) ;
oracle.sql.CHAR lastName = new ora cle.sql.CHAR(«Price», myCharSet);
System.out.pr intln(«lastName = « + lastName);
/ / создайте объект orac le.sql.DATE
ora c le .sql.DATE dob = new oracle.sql.DATE(«1969-02-22 13:54:12»);
S t r in g dobString = d o b .s t r in g V a lu e ( );
Sy s tem.out.pr in tln(«dob S tr ing = « + dobString);
/ / создайте объект OraclePreparedStatement
OraclePreparedStatement myPrepStatement =
(OraclePreparedStatement) myConnection.prepareStatement(
«INSERT INTO customers « +
«(customer_id, first_name, last_name, dob, phone ) VALUES (« +
«?, ? 9 9 9 » +
“)’’ ........
);
/ / свяжите объекты с OraclePreparedStatements, используя
/ / соответствующие методы создания
myPrepStatement.setNUMBER(1, customerld);
myPrepStatement.setCHAR(2, firstName);
myPrepStatement.setCHAR(3, lastName);
myPrepStatement.setDATE(4, dob);
/ / установите столбец phone на NULL
myPrepStatement.setNULL(5, Oracle.Types.CHAR);
/ / выполните PreparedStatement
myPrepStatement. exe cute ( );
System.out.println(«ADDed row to customers table»);
//выберите столбцы ROWID, customer_id, first_name, last_name, dob и
/ / phone для новой строки, используя объект Orac leResultSet
Statement myStatement = myConnection.createStatement();
Orac leResultSet customerResultSet =
(Orac leResultSet) myStatement.executeQuery(
«SELECT ROWID, customer_id, first_name, last_name, dob, phone « +
«FROM customers « +
«WHERE customer_id = 6»
);
Sy s tem.o u t .pr in t ln(«Re t r ie v ed row from customers table»);
//объявите объект oracle.sql.ROWID для хранения ROWID и
/ / объект oracle.sql.CHAR для хранения столбца phone
oracle.sql.ROWID rowid;
oracle.sql.CHAR phone = new oracle.sql.CHAR(«», myCharSet);
/ / выведите значения столбцов для этой строки, используя
/ / для чтения значений методы получения
while (cus tome r .Re sultS e t .n e x t ( )) {
rowid = customerResultSet.getR0WID(«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. p r in t ln (« rowid = « + rowid . s t r in g V a lu eO) ;
596
Глава 15
Sys tem.out.pr intln(«cus tomer Id = « + c u s tome r ld . s t r in g V a lu eO ) ,
S y s tem.o ut .pr in t ln(« fir s tName = « + firstName);
System.out.pr intln(«lastName = « + lastName);
System.out. p r int ln(« d ob = « + d o b .s t r in g V a lu eO ) ;
S y s tem .o u t .p r in t ln (« p h o n e = « + phone);
} / / end of while loop
/ / закройте объект Ora c le re su ltS e t , используя метод c lo s e ( )
customerResultSet. c lo s e ();
/ / откатите внесенные в базу данных изменения
myConnection.rollback();
//закройте прочие объекты JDBC
myPrepStatement. c lo s e ( );
myConnection. c lo s e ( );
} catch (SQLException e) {
S y s tem.o u t .p r in t ln (« E r ro r code = « + e .ge tE r ro rC od eO) ,
System.out. p r in t ln (« E r ro r message = « + e.getMessageO),
System.o u t . printing«SQL State = « + e.getSQLState( )),
e. p r in tS ta c kT ra ceO;
} ' '
} / / end of main()
^ Выходные данные программы выглядят следующим образом:
□ cus tomer ldlnt = 6
firs tNameS tr ing = Jason
lastNameString = P r ice
dobString = 2/22/1969 13:54:12
ADDed row to customers ta b le
Retrieved row from customers ta b le
rowid = AAARk5AAEAAAAGPAAF
customerld = 6
firstName = Jason
lastName = Pice
dob = 2/22/1969 13:54:12
phone = n u l l
dobstring2 = 2/22/1969 0:0:0
Итоги
В этой главе вы узнали, что
■ API JDBC позволяет Java получать доступ к базе данных.
■ Драйверы JDBC Oracle используются для подключения к базе данных
Oracle.
ш Операторы SQL могут выполняться с использованием JDBC.
■ Корпорация Oracle разработала целый ряд расширений стандартного
JDBC, которые позволяют получить доступ ко всем типам данных,
поддерживаемым базой данных Oracle.
В следующей главе вы увидите, как настроить ваши выражения SQL на
максимальную производительность.
Глава 16
Настройка
высокой
производительности
SQL
Знакомство с настройкой SQL
Одна из сильных сторон SQL в том, что от пользователя не требуется, чтобы
он давал точные указания базе данных, как именно следует получить
запрошенные данные. Нужно просто ввести запрос, указывая, какую именно
информацию вы хотите получить, и база данных сама выбирает, каким
способом лучше получить эти данные. Иногда возникает возможность
улучшить производительность операторов SQL путем их настроики .