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

whereClause

);

Динамическое создание операторов не ограничивается только оператором

SELECT и распространяется на все остальные операторы SQL.

Ш а г 2: Чтение значений столбцов из объекта ResultSet

Для чтения значений столбцов для строк, хранящихся в объекте ResultSet,

в классе ResultSet предусмотрен целый ряд методов получения. Прежде

чем углубиться в детали этих методов, необходимо понять, каким образом

типы данных, используемые для представления величин в Oracle, могут

быть отображены на сопоставимые типы данных Java.

Типы O racle и Java '

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

отличающийся от набора типов, используемого в Oracle. Используемые

Oracle типы совместимы с определенными типами Java. Это позволяет

Java и Oracle обмениваться данными, хранящимися в соответствующих

друг другу типах. В таблице 15.3 показан один набор совместимых типов.

Таблица 15.3. Отображения совместимых типов

Тип Oracle Тип Java

CHAR String

VARCHAR2 String

DATE java.sql.Date

java.sql.Time

java.sql.Timestamp

INTEGER short

int

long

NUMBER float

double

java.math.BiqDecimal

Из этой таблицы видно, что тип данных Oracle INTEGER совместим с

типом данных Java int (о числовых типах см. ниже в данной главе.) Это

означает, что значение столбца customer_id таблицы customers (которое

определяется в Oracle как Integer) можно хранить в переменной int Java.

Столбцы first_name, last_name и phone можно хранить в переменных

Stringjava.

В переменных типа DATE в Oracle хранится значение года, месяца, дня,

часа, минут и секунд. Для хранения части значения столбца dob, представляющей

дату, можно использовать объект java.sql.Date, а объект java.sql.

562 Глава 15

Time можно использовать для хранения части значения столбца dob, представляющей

время. Кроме того, для хранения обеих частей, представляющих

как дату, так и время, можно использовать объект java.scjl.Timestamp.

Ниже в данной главе обсуждается тип oracle.sql.DATE, который является

расширением стандарта JDBC, внесенным корпорацией Oracle, и обеспечивает

альтернативный вариант хранения даты и времени.

Столбцы customer_id, first_name, last_name, dob и phone были отобраны

оператором SELECT в предыдущем разделе, а в следующих примерах объявляются

переменные и объекты Java, совместимые с этими столбцами.

□ int customer_id = 0;

String firstname = null;

String lastname = null;

java.sql.Date.dob = null;

String phone = null;

Типы String и int являются частью базового языка Java, тогда KaKjavs.sql.

Date является частью JDBC и представляет расширение базового языка

Java. JDBC представляет целый ряд таких типов, которые позволяют Java и

реляционной базе данных обмениваться данными. Однако JDBC не покрывает

все типы, используемые Oracle, примером чего является тип данных

R0WID - для хранения данных Oracle типа R0WID необходимо использовать

oracle. sql.ROWID.

Для обработки всех типов Oracle корпорация Oracle предлагает целый

ряд дополнительных типов, определенных в пакете oracle.sql. Кроме того,

в Oracle есть целый ряд типов, которые могут быть использованы в качестве

альтернативы базовым типам Java и JDBC. В некоторых случаях эти

альтернативные типы обеспечивают более широкие функциональные возможности

и лучшую производительность, чем базовые типы Java и JDBC

(более подробно о типах Oracle, определенных в пакете oracle.sql, см. ниже

в данной главе).

Теперь, когда у вас есть представление о совместимых типах Java и

Oracle, давайте перейдём к примеру и посмотрим, как использовать методы

получения для чтения значений столбцов.

Использование методов получения для чтения значений

столбцов

Методы получения используются для чтения значений, хранящихся в объекте

ResultSet. Имя каждого такого метода очень просто для понимания:

возьмите имя того типа Java, в котором вы хотите получить возвращенное

значение столбца, и добавьте в его начало слово get. Например, если вы хотите

прочесть значение столбца как тип Java int, используйте метод getlnt(),

а если желаете получить cTpoKyJava (String), используйте getString(). Чтобы

прочесть значение как java.sql.Date, вы должны использовать метод

getDate(). Каждый из методов получения (get) принимает на входе один параметр:

число типа int, представляющее положение столбца в первоначальном

операторе SELECT, или строку String, содержащую имя столбца. Исследуем

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

извлекались из таблицы customers в объект customerResultSet.

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

Для получения значения столбца customer_id, который является первым