Spec-Zone .ru
спецификации, руководства, описания, API
|
Усовершенствованные типы данных, представленные в этом разделе, дают реляционной базе данных больше гибкости в том, что может использоваться в качестве значения для столбца таблицы. Например, столбец может использоваться, чтобы сохранить BLOB
значения (большого двоичного объекта), которые могут сохранить очень большие объемы данных как необработанные байты. Столбец может также иметь тип CLOB
(символьный большой объект), который способен к хранению очень больших объемов данных в символьном формате.
Последняя версия стандарта SQL ANSI/ISO обычно упоминается как SQL:2003. Этот стандарт определяет следующие типы данных:
Встроенные типы SQL92, которые состоят из знакомых типов столбца SQL такой как CHAR
, FLOAT
, и DATE
Встроенные типы SQL99, которые состоят из типов, добавленных SQL99:
BOOLEAN
: Булево (истинное или ложное) значение
BLOB
: Двоичный крупный Bobject
CLOB
: Символьный большой объект
Новые встроенные типы добавили SQL:2003:
XML
: Объект XML
Определяемые пользователем типы:
Структурированный тип: определяемый пользователем тип; например:
CREATE TYPE PLANE_POINT AS (X FLOAT, Y FLOAT) NOT FINAL
DISTINCT
введите: определяемый пользователем тип, основанный на встроенном типе; например:
CREATE TYPE MONEY AS NUMERIC(10,2) FINAL
Созданные типы: Новые типы, основанные на данном базовом типе:
REF(structured-type)
: Указатель, который постоянно обозначает экземпляр структурированного типа, который находится в базе данных
base-type ARRAY[n]
: Массив n элементов базового типа
Локаторы: Объекты, которые являются логическими указателями на данные, которые находятся на сервере базы данных. Локатор существует в клиентском компьютере и является переходным процессом, логическим указателем на данные на сервере. Локатор обычно обращается к данным, которые являются слишком большими, чтобы осуществиться на клиенте, таком как изображения или аудио. (Осуществленные представления являются результатами запроса, которые были сохранены или "осуществлены" заранее, поскольку схема возражает.) Есть операторы, определенные на уровне SQL, чтобы получить части, к которым в произвольном порядке получают доступ, данных, обозначенных локатором:
LOCATOR(structured-type)
: Локатор к структурированному экземпляру в сервере
LOCATOR(array)
: Локатор массиву в сервере
LOCATOR(blob)
: Локатор к большому двоичному объекту в сервере
LOCATOR(clob)
: Локатор к символьному большому объекту в сервере
Datalink
: Введите для того, чтобы управлять данными, внешними к источнику данных. Datalink
значения являются частью MED SQL (управление Внешними Данными), частью спецификации стандарта ANSI/ISO SQL.
API JDBC обеспечивает отображения значения по умолчанию для усовершенствованных типов данных, определенных стандартом SQL:2003. Следующий список дает типы данных и интерфейсы или классы, на которые они отображаются:
BLOB
: Blob
интерфейсCLOB
: Clob
интерфейсNCLOB
: NClob
интерфейсARRAY
: Array
интерфейсXML
: SQLXML
интерфейсStruct
интерфейсREF(structured type)
: Ref
интерфейсROWID
: RowId
интерфейсDISTINCT
: Введите, на который отображается базовый тип. Например, a DISTINCT
значение, основанное на SQL NUMERIC
введите карты к a java.math.BigDecimal
введите потому что NUMERIC
карты к BigDecimal
в языке программирования Java.DATALINK
: java.net.URL
объектВы получаете, храните, и обновляете усовершенствованные типы данных тем же самым путем, Вы обрабатываете другие типы данных. Вы используете также ResultSet.getDataType
или CallableStatement.getDataType
методы, чтобы получить их, PreparedStatement.setDataType
методы, чтобы сохранить их, и ResultSet.updateDataType
методы, чтобы обновить их. (Переменная DataType
имя интерфейса Java или class, отображенного на усовершенствованный тип данных.), Вероятно, 90 процентов операций, выполняемых на усовершенствованных типах данных, включают использование getDataType
, setDataType
, и updateDataType
методы. Следующие табличные шоу, который методы использовать:
Усовершенствованный Тип данных | getDataType Метод |
setDataType метод |
updateDataType Метод |
---|---|---|---|
BLOB |
getBlob |
setBlob |
updateBlob |
CLOB |
getClob |
setClob |
updateClob |
NCLOB |
getNClob |
setNClob |
updateNClob |
ARRAY |
getArray |
setArray |
updateArray |
XML |
getSQLXML |
setSQLXML |
updateSQLXML |
Structured type |
getObject |
setObject |
updateObject |
REF(structured type) |
getRef |
setRef |
updateRef |
ROWID |
getRowId |
setRowId |
updateRowId |
DISTINCT |
getBigDecimal |
setBigDecimal |
updateBigDecimal |
DATALINK |
getURL |
setURL |
updateURL |
Отметьте: DISTINCT
тип данных ведет себя по-другому от других усовершенствованных типов данных SQL. Будучи определяемым пользователем типом, который уже основан на существующие встроенные типы, у этого нет никакого интерфейса как его отображения в языке программирования Java. Следовательно, Вы используете метод, который соответствует типу Java на который DISTINCT
тип данных базируется. См. Используя ОТЛИЧНЫЙ Тип данных для получения дополнительной информации.
Например, следующий фрагмент кода получает SQL ARRAY
значение. Для этого примера предположите что столбец SCORES
в таблице STUDENTS
содержит значения типа ARRAY
. Переменная stmt
a Statement
объект.
ResultSet rs = stmt.executeQuery( "SELECT SCORES FROM STUDENTS " + "WHERE ID = 002238"); rs.next(); Array scores = rs.getArray("SCORES");
Переменная scores
логический указатель на SQL ARRAY
объект хранится в таблице STUDENTS
в строке для студента 002238
.
Если Вы хотите сохранить значение в базе данных, Вы используете соответствующее set
метод. Например то, следующий фрагмент кода, в который rs
a ResultSet
объект, a хранилищ Clob
объект:
Clob notes = rs.getClob("NOTES"); PreparedStatement pstmt = con.prepareStatement( "UPDATE MARKETS SET COMMENTS = ? " + "WHERE SALES < 1000000"); pstmt.setClob(1, notes); pstmt.executeUpdate();
Это кодовые наборы notes
как первый параметр в операторе обновления, отправляемом базе данных. Clob
значение, определяемое notes
будет сохранен в таблице MARKETS
в столбце COMMENTS
в каждой строке, где значение в столбце SALES
меньше чем один миллион.