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

«T0_DATE(' » + dob + «', ' YYYY, MM, DD') , '» + phone + «')»

System.out.println(«ADDed row to customers table»);

/ / выполните оператор SQL UPDATE для модификации

//столбца с именем покупателя № 1

firstName = “ Jean” ;

myStatement.executeUpdate(

«UPDATE customers « +

«SET first_name = '» + firstName + «' « +

«WHERE customer_id = 1»

);

System.out.println(«Updated row in customers table»);

/ / выполните оператор SQL DELETE для удаления покупателя № 5

myStatement.executeUpdate(

«DELETE FROM customers « +

576 Глава 15

«WHERE customer_id = 5»

);

Sy s tem.out.pr intln(«De le ted row from customers table») ;

/ / создайте объект ResultSet и заполните его

/ / результатами оператора SELECT, который выбирает значения

//столбцов customer_id, first_name, last_name, dob и phone

//для всех строк таблицы customers

/ / используется метод executeQuery() объекта Statement

/ / для выполнения оператора SELECT

ResultSet customerResultSet = myStatement.executeQuery(

«SELECT customer_id, first_name, last_name, dob, phone « +

«FROM customers»

S y s tem.o u t .p r in t ln («Re t r iv e d rows from customers table») ;

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

/ / метод next(), и используйте методы получения (get) для чтения значений,

//выбранных из столбцов базы данных

while (cus tome rResultSet.nex t() ) {

customerld = customerResultSet.getInt(«customer_id»);

firstName = customerResultSet.getStr ing(«firs t_name»);

lastName = customerResultSet.getString(«last_name»);

dob = customerResultSet.getDate(«dob»);

dobTime = customerResultSet.getTime(«dob»);

dobTimestamp = customerResultSet.getTimestamp(«dob»),

phone = customerResultSet.getString(«phone»);

System.out.pr intln(«customerId = « + customerld);

S y s tem.o ut .pr in t ln(« fir s tName = « + firstName);

System.out.pr intln(«lastName = « + lastName);

S ys tem.out.pr intln(«dob = « + dob);

System.out.println(«dobTime = « + dobTime);

System.out.println(«dobTimestamp = « + dobTimestamp);

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

} / / конец цикла while

/ / закройте объект ResultSet, используя метод c lo s e ( )

customerResultSet. c lo s e ( );

/ / откатите изменения, внесенные в базу данных

myConnection.rollback();

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

id и p r ice

short productldShort;

in t pro du c t ldln t ;

long productldLong;

f lo a t p r ice F lo a t ;

double priceDouble;

java.math.BigDecimal priceBigDec;

/ / создайте другой объект ResultSet и выберите

/ / столбцы product_id, product_type_id и p r ic e для товара № 12

/ / (эта строка содержит значение NULL в столбце product_type_id)

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

Re sultse t productResultSet = myStatement.executeQuery(

«SELECT product_id, product_type_id, p r ic e « +

«FROM products « +

«WHERE product_id = 12»

);

S y s tem.o u t .pr in t ln («Re t r iv e d row from products table»);

while (pro d uc tR e sultS e t .ne x t ( ) ) {

Sys tem.o ut.pr in tln(«pro du c t_ id = « +

produc tResultSe t.get Int(«produc t_id = / / ) ;

Sys tem.out.pr intln(«product_type_id = «+

produc tResultSe t.get Int(«produc t_type_ id») );

//проверьте, не является ли только что прочитанное значение пустым

(NULL)

i f (p ro d uc tsRe sultS e t .wa sNullO) {

S y s tem.o u t .p r in t ln (« L a s t value read was NULL»);

}/

/ используйте для чтения значения метод getObjec t( ) и конвертируйте

значение

/ / в интерфейсный объект - при этом значение NULL базы данных будет

/ / конвертировано в значение n u l l Java

ja v a . la n g . In te g e r productTypeld =

( ja v a . la n g ln te g e r ) productResultSet.getObject(«product_type_id»);

System.out.println(«productTypeId = « + productTypeld);

/ / выберите значения столбцов product_id и p r ic e в

/ / различные числовые переменные, определенные ранее

productldShort = produc tResultSe t.getSho r t(«produc t_id») ;

р ro duc t Id lnt = productResultSe t.get Int(«produc t_id»);

productLong = productResultSet.getLong(«product_id»);

p r ic e F lo a t = produ c tRe sultS e t.ge tF loa t(«pr ice») ;

priceDouble = productResultSet.getDouble(«price»);

priceBigDec = productResultSet.getBigDec imal(«price») ;

System.out.pr intln(«produc t IdShor t = « + productldShort) ;

S y s tem.o ut .pr in t ln(« pro du c t IdInt = « + p r o d u c t ld ln t ) ;

System.out.println(«productIdLong = « + productldLong);

S y s tem.o u t .p r in t ln (« p r ic e F lo a t = « + p r ic e F lo a t ) ;

Sy s tem.out.pr intln(«pr iceDouble = « + priceDouble);

S y s tem.out.pr in tln(«pr iceBigDe c = « + priceBigDec);

} / / конец цикла while

/ / закройте объект ResultSet

p ro d u c tR e su ltS e t .c lo s e ( );

/ / выполните оператор SQL DDL CREATE TABLE для создания новой таблицы,

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

myStatement. execute(

«CREATE TABLE addresses (« +

« addresses_id INTEGER CONSTRAINT addresses_pk PRIMARY KEY,» +

« customer_id INTEGER CONSTRAINT addresses_fk_customers « +

« REFERENCES customers(customer_id), « +

« s t re e t VARCHAR2(20) NOT NULL,» +

« C i t y VARCHAR2(20) NOT NULL,» +

« s ta te CHAR(2) NOT NULL» +

« ) »

Глава 15

);

Sy s tem.out.pr intln(«Create d addresses table»);

/ / удалите эту таблицу, используя оператор SQL DROP TABLE

myStatement.execute(«DROP TABLE addresses»);

System.out.println(«Dropped addresses table») ;

} catch (SQLException e) {

S y s tem.o u t .p r in t ln (« E r ro r code = « + e.getEr rorCodeQ) ;

S y s tem.o u t .p r in t ln (« E r ro r message = « + e.getMessageO);

System.out.println(«SQL State = « + e.getSQLStateO) ;

e. pr in tS ta c kTra ceO;

} f i n a l l y {

tfy i , /ч

/ / закройте объект Statement, используя метод c lo s e ( )

i f ’ (myStatement != n u l l ) {

myStatement.close();

/ / закройте объект Connection, используя метод c lo s e Q