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

/ / ОТРЕДАКТИРУЙТЕ В СЛУЧАЕ НЕОБХОДИМОСТИ

/ / создайте объект 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 путем их настроики .