|
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 меньше чем один миллион.