«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