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

год, ММ - номер месяца, a DD - номер дня. Кроме того, для представления времени и дат, содержащих

время, можно также использовать классы java.sql.Time и java.sql.Timestamp соответственно.

При попытке указать в операторе SQL дату сначала нужно конвертировать

ее в формат, понятный базе данных, используя встроенную функцию

T0_DATE(). Функция T0_DATE() принимает строку, содержащую дату, а также

формат этой даты. Увидеть, как используется функция T0_DATE(), можно в

следующем примере оператора INSERT. Ниже в данной главе будут показаны

расширениях JDBC, предложенные корпорацией Oracle, и дополнительные

присущие только Oracle способы представления дат с использованием

типа oracle.sql.DATE.

Теперь можно выполнить оператор INSERT для вставки новой строки в

таблицу customers. Для чего используется объект myStatement, устанавливающий

значения столбцов customer_id, first_name, last_name, dob и phone

равными значениям, ранее присвоенным переменным customerld,

firstName, lastName, dob и phone.

□ myStatement.executeUpdate(

“ INSERT INTO customers “ +

“ (customer_id, first_name, last_name, dob, phone) VALUES ( “ +

customerld + + firstName + +lastName + “ +

“T0_DATE(' ” + dob + ‘ YYYY, MM, DD'), ‘ ” + phone + “ ' ) ”

);

Обратите внимание на использование функции T0_DATE() для конвертирования

объекта dob в приемлемую для базы данных Oracle дату. После

завершения выполнения оператора таблица customers будет содержать новую

строку.

Модификация строк базы данных

Для модификации строк базы данных используется оператор UPDATE. Как и

в случае выполнения с помощью JDBC оператора INSERT, можно использовать

метод executeUpdate(), определенный в классе Statement, или метод

execute(), определенный в классе PreparedStatement (см. ниже).

Следующий пример иллюстрирует, как можно модифицировать строку,

в которой столбец customer_id равен 1:

□ firstName = «Jean»;

myStatement.executeUpdate(

“UPDATE customers “ +

“SET first_name = " ’ + firstName + “ +

“WHERE customer_id = 1”

);

После выполнения этого оператора имя покупателя № 1 будет установлено

на «Jean».

566 Глава 15

Удаление строк из базы данных

Для удаления имеющихся строк из базы данных используется оператор

языка SQL DELETE. Можно использовать для этого определенный в классе

Statement метод executeUpdate() или метод execute(), определенный в классе

PreparedStatement.

Следующий пример иллюстрирует удаление из таблицы customers покупателя

№5:

□ myStatement.executeUpdate(.

“DELETE FROM customers “ +

“WHERE customer_id = 5"

);

После завершения этого оператора строка для покупателя № 5 оказывается

удаленной из таблицы customers.

Работа с числами

В этом разделе рассмотрены вопросы, связанные с хранением чисел в Java-

программах. База данных Oracle может хранить числа с точностью до 38

разрядов. В контексте представления чисел разрядность означает ту точность,

с которой числа с плавающей точкой могут быть представлены в

цифровой памяти компьютера. Разрядность в 38 цифр, предлагаемая базой

данных, позволяет хранить очень большие числа.

Все это очень хорошо при работе с числами в базе данных, но вы видели,

что Java использует для представления чисел собственный набор типов,

так что нужно быть очень внимательным при выборе типа данных

Java, представляющего в вашей программе числа, особенно, если вы собираетесь

хранить эти числа в базе данных.

Для хранения целых чисел можно использовать типы short, int, LONG

или java.math.BigInteger, в зависимости от того, насколько велики те числа,

которые вы собираетесь хранить. В таблице 15.4 показано количество

битов, которые используются для хранения типов short, int и LONG, а также

минимальные и максимальные значения для каждого из типов.

Таблица 15.4. Типы short, int и long

Тип Биты Нижняя граница Верхняя граница

short 16 -32768 32767

int 32 -2147483648 2147483647

long 64 -9223372036854775808 9223372036854775807

Для хранения в Java-программе чисел с плавающей точкой следует использовать

типы float, double или java.math.BigDecimal. В таблице 15.5 показаны

те же самые данные, что и в таблице 15.4, только для типов float и

double, а также точность, поддерживаемая каждым из этих типов.

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

Таблица 15.5. Типы float и double

Тип Биты Нижняя граница Верхняя граница Точность

float 32 -3.4Е+38 3.4Е+38 6 цифр

double 64 -1.7Е+308 1.7Е+308 15 цифр

Как вы видите, тип float можно использовать для хранения в Java-npo-

грамме чисел с плавающей точкой с точностью до 6 цифр, а тип double -

для хранения чисел с плавающей точкой с точностью до 15 цифр. Если

нужно хранить числа с точностью, превышающей 15 цифр, можно использовать