Этот механизм состоит из методов getXXX
и setXXX
,
метода registerOutParameter
и класса Types
.
В этом разделе обсуждается все, что касается типов данных и их преобразование, а также приведены соответствующие таблицы преобразования типов.
LONG RAW
, в Sybase он называетсяt IMAGE
, в Informix -
BYTE
, а в DB2 - LONG VARCHAR FOR BIT DATA
.
К счастью, программистам не обязательно отягощать себя именами типов SQL, используемых в таблицах БД. Большую часть времени прораммисты создают программы над уже созданной структурой БД, и им не приходится заботиться о названиях типов данных, используемых при создании таблиц.
JDBC объявляет набор базовых типов SQL в классе
java.sql.Types
. Эти типы отвечают наиболее типично используемые
в БД типы данных. При программировании с использованием JDBC API программисты
могут использовать эти JDBC-типы для обращения к базовым типам SQL незаботясь
о том, какие имена типов данных использовались при создании БД. Эти типы
полностью описаны в следующем разделе.
Наиболее типичный запрос, в котором существует необходимость использовать имена
типов данных, - это SQL-запрос создания таблицы CREATE TABLE
.
Тут-то программист и должен позаботиться о правильном именовании типов данных.
Если Вам нужно описание типов данных, поддерживаемых Вашей СУБД, то справьтесь
об этом в документации к данной СУБД.
Если Вы хотите, чтобы Ваше приложение легко портировалось на различные СУБД,
Вы должны выбрать одно из двух: либо используйте широко распространенные имена
типов, такие как
INTEGER
, NUMERIC
или VARCHAR
, которые
будут работать с любой СУБД, либо используйте метод
java.sql.DatabaseMetaData.getTypeInfo
для получения информации о
SQL-типах, поддерживаемых данной СУБД и выбора имени SQL-типа, соответствующего
определенному JDBC-типу.
JDBC определяет стандартное отображение JDBC-типов в Java-типы. Например,
INTEGER
соответствует int
. Отображение позволяет
манипулировать SQL-значениями с помощью типов данных языка Java.
Совсем не обязательно, что Java-типы должны полностью совпадать с JDBC-типами; они лишь
должны быть способны без потерь сохранять и считывать параметры и
считывать результаты SQL-запросов.
Например, Java-объект String
не совпадает в точности с JDBC-типами
CHAR
, однако достаточен для сохранения полной информации о значениях
типа CHAR
, VARCHAR
и LONGVARCHAR
.
CHAR
представляет из себя короткую строку с фиксированной длиной,
VARCHAR
представляет из себя короткую строку с переменной длиной,
а LONGVARCHAR
- длинную символьную строку с переменной длиной.
Тип данных SQL CHAR
, соответствующий JDBC-типу
CHAR
, определен в SQL-92 и поддерживается всеми СУБД. Он также
принимает параметр, равный длине сроки.
Так, CHAR(12)
определяет 12-символьную строку. Все основные СУБД
поддерживают длину CHAR
до 254 символов.
Тип данных VARCHAR
тоже определен в SQL-92 и поддерживается подавляющим
большинством СУБД. Он принимает параметр, указывающий максимальную длину строки.
Так, VARCHAR(12)
описывает строку, длина которой
может быть до 12 символов. В большинстве СУБД максимальная длина VARCHAR
составляет 254 символов. При присвоении переменной типа VARCHAR
строкового значения, БД запоминает длину этой строки и при выборке значения
возвратит в точности первоначальную строку.
К сожалению, в SQL не существует устоявшегося эквивалента для типа LONGVARCHAR
.
Большинство СУБД поддерживают очень большие строки длиной аж до гигабайта,
но имена таких SQL-типов различаются.
Программист не обязан различать три типа строк JDBC -
CHAR
, VARCHAR
и LONGVARCHAR
. Каждая
строка может быть выражена объектом Java String
, и существует возможность
читать и писать SQL-операторы привильно не зная о том, какой именно из типов данных
используется.
CHAR
, VARCHAR
и LONGVARCHAR
должны
отображаться либо в String
, либо в
char[]
, но обычно именно String
. Конвертирование
из String в char[] выполняется коструктором new String с параметром char[].
Обратное преобразование выполняется методом String.getChars().
Стоит остановиться на обработке строк фиксированной длины
CHAR(n)
. Эта обработка заклчается в том, что СУБД (или драйвер)
дополняет строку до нужной длины пробелами. Т.е. когда поле
CHAR(n)
извлекается из БД, драйвер сконвертирует его в
объект String
с длиной ровно n
и пробелами в конце.
И наоборот, когда объект String
записывается в поле
CHAR(n)
, драйвер или СУБД преоразует его, дополнив с конца
пробелами до длины n
.
Метод ResultSet.getString
, используемый для типов данных
CHAR
, VARCHAR
и LONGVARCHAR
,
подходит для извлечения нормальных данных, но будет нехорошо, если
значение LONGVARCHAR
, занимающее несколько мегабайт, окажется
в объекте String. Поэтому интерфейс ResultSet
позволяет
программисту извлекать значение
LONGVARCHAR
в виде потока ввода, из которого можно последовательно
считывать данные кусками любого размера. Методы getAsciiStream
и
getUnicodeStream
позволяют доставлять данные, сохраненные в колонке
типа LONGVARCHAR
, в виде потока Ascii- или Unicode-символов.
BINARY
представляет собой маленький двойчный объект с фиксированный длиной,
VARBINARY
представляет собой маленький двойчный объект с переменной длиной,
а LONGVARBINARY
- большой двоичный объект с переменной длиной.
К сожалению, использование этих типов не было стандартизовано, и различные СУБД поддерживают их в разнобой.
SQL-тип данных BINARY
, соответствующий JDBC-типу BINARY
-
это нестандартное расширение SQL и реализовано только в некоторых СУБД. Этот тип
принимает параметр, указывающий количество байтов.
Например, BINARY(12)
описывает 12-байтный двоичный тип данных.
Обычно значения BINARY
ограничены 254 байтами.
Тип SQL VARBINARY
, соответствующий типу JDBC
VARBINARY
- это тоже нестандартное расширение SQL,
реализованное только в некоторых СУБД. Он принимает параметр - максимальную длину
последовательности байтов.
Т.о. VARBINARY(12)
описывает двоичные данные, чья длина может быть
до 12-и байтов. Обычно значения VARBINARY
ограничены
254 байтами. При присвоении переменной
VARBINARY
значения БД запоминает его длину, поэтому при выборке
значения получается в точности оригинальное значение.
К сожалению, для JDBC-типа LONGVARBINARY
не существует устойчивого SQL-эквивалента.
Все основные СУБД поддерживают несколько видов типов очень больших двоичных
данных, поддерживая максимальную длину как минимум гигабайт. При этом
имена SQL-типов различаются.
BINARY
, VARBINARY
и LONGVARBINARY
могут быть выражены
в виде массивов byte[]
в Java.
Для извлечении значений BINARY
и VARBINARY
рекомендуется использовать метод ResultSet.getBytes
.
Однако, если LONGVARBINARY
хранит много мегабайтов, то лучше использовать
getBinaryStream
, как и случае с LONGVARCHAR
. С помощью него
можно считывать результат покусочно.
BIT
представляет собой один бит, который может
принимать значения 0 или 1.
SQL-92 определяет тип данных BIT
. В отличие от JDBC,
BIT
в
SQL-92 может использоваться как параметризованный тип данных в виде двоичной строки
с фиксированной длиной. SQL-92 также разрешает использовать бит автономно, не в составе
битовой строки - как раз то, что и подразумевается под битом в JDBC.
К сожалению, тип BIT
требуется только в полной спецификации
SQL-92 и отсутствует во многих СУБД. В переносимом коде предпочитается использовать
тип JDBC SMALLINT
, который поддерживается всеми.
Рекомендуемое отображение для типа JDBC BIT
- это boolean в языке Java.
TINYINT
представляет собой 8-битное беззнаковое
целое в диапазоне от 0 до 255.
Соответствующий тип в SQL, тоже TINYINT
, в настоящее время
существует не во всех СУБД, поэтому лучше использовать
SMALLINT
.
Рекомендуемое отображение для типа JDBC TINYINT
- это
либо byte
, либо short
.
8-битный byte
является знаковым целым от -128 до 127, поэтому
нам не совсем подходит. Java-тип short
умещает в себе весь
диапазон значений TINYINT
, поэтому лучше использовать именно его.
SMALLINT
представляет собой 16-битное знаковое целое
в диапазоне от -32768 до 32767.
Соответствующий тип в SQL, SMALLINT
, объявленный в
SQL-92, широко используется практически всеми СУБД.
Предпочтительным эквивалентом этого типа в языке Java является short
.
INTEGER
представляет собой 32-разрядное знаковое целое
в диапазоне от -2147483648 до 2147483647.
Соответствующий SQL-тип INTEGER
определен в SQL-92
и широко используется всеми СУБД.
Предпочтительным эквивалентом типа INTEGER
в Javе является int
.
BIGINT
представляет собой 64-разрядное целое
между -9223372036854775808 и 9223372036854775807.
Соответствующий ему тип SQL BIGINT
является нестандартным расширением
языка SQL. На практике этот тип данных не реализован в СУБД, поэтому в портируемом
коде рекомендуется избегать его использования.
Эквивалентом типа BIGINT
в языке Java служит long.
REAL
представляет собой число с плавающей точкой одинарной
точности, поддерживающее 7 разрядов в мантиссе.
Соответствующий тип в SQL REAL
определен в SQL-92
и широко, если не универсально, используется всеми СУБД.
Рекомендуемый эквивалент для типа REAL
в Java - это float
.
DOUBLE
представляет число с плавающей точкой
двйоной точности с 15-разрядной мантиссой.
Соответствующий ему SQL-тип, DOUBLE PRECISION
, определен в
SQL-92 и широко используется во всех основных СУБД.
DOUBLE
отображается на тип Java double
.
FLOAT
эквивалентем типу DOUBLE
. Он введен для
совместимости с ранними версиями API.
FLOAT
представляет из себя число с плавающей точкой двойной точности
с 15-разрядной мантиссой.
Рекомендуемое отображение типа FLOAT
- это тип
Java double
. Вследствие потенциальной угрозы путаницы между
числами двойной точности в
SQL FLOAT
и числами одинарной точности в
Java float
лучше использовать тип JDBC DOUBLE
.
DECIMAL
и NUMERIC
очень похожи.
Оба представляют собой десятичные числа с фиксированной точкой.
Соответствующие типы данных SQL, DECIMAL
и NUMERIC
,
определены в стандарте SQL-92 и очень распространены. Эти типы принимают
два параметра - точность (precision) и масштаб (scale). Точность - это
общее количество десятичных цифр, а масштаб - число цифр после точки.
Масштаб должен быть всегда не больше точности.
Например, "12.345" имеет точность 5 и масштаб 3, а значение ".11" -
точность 2 и такой же масштаб. JDBC требует, чтобы как
DECIMAL
, так и NUMERIC
поддерживали максимальное значение
точности и масштаба как минимум 15.
Единственное отличие DECIMAL
отd NUMERIC
в
спецификации SQL-92 - в том, что NUMERIC
именно указанную точность,
в то время как для типов данных DECIMAL
возможно увеличение точности
за пределы того значения, которое было задано при создании типа.
Таким образом, колонка, созданная как NUMERIC(12,4)
всегда будет
представлена 12-ю цифрами, в то время как колонка, определенная как
DECIMAL(12,4)
, может хранить немного более точные значения.
Рекомендуемое отображение типов DECIMAL
и NUMERIC
- это объект java.math.BigDecimal
, который также представляет собой
числа с фиксированной точкой.
Над типами java.math.BigDecimal
можно выполнять арифметические операции
сложения, вычитания, умножения и деления как с другими объектами java.math.BigDecimal
,
так и с целыми числами и числами с плавающей запятой.
Метод, рекомендуемый для извлечения значений типа DECIMAL
и
NUMERIC
- это ResultSet.getBigDecimal
.
JDBC также позволяет трактовать эти значения как обычные строки или массивы символов.
Т.е. программист может использовать метод
getString
для чтения
DECIMAL
или NUMERIC
.
DATE
представляет дату, содержащую день, месяц и год.
Соответствующий SQL-тип
DATE
определен в SQL-92, но реализован не во всех СУБД.
Некоторые БД предлагают альтернативные типы SQL, поддерживающие ту же семантику.
TIME
представляет собой время, состоящее из
часов, минут и секунд. Соответствующий тип в SQL,
тоже TIME
, определен в SQL-92, но реализован только в нескольких
СУБД. Как и с датой, некоторые БД предлагают альтернативы типу TIME
.
TIMESTAMP
представляет DATE
плюс
TIME
плюс поле наносекунды.
Соответствующий тип в SQL, TIMESTAMP
, определен
в SQL-92, но реализован не во всех СУБД.
java.util.Date
не соответствует
ни одному из этих трех типов данных в точности (он включает информацию и о
дате, и о времени) определяет три подкласса класса
java.util.Date
, соответствующих типам данных SQL:
java.sql.Date
для информации о DATE
.
Поля часа, минуты, секунды и миллисекунды базового класса
java.util.Date
устанавливаются в 0.
java.sql.Time
для TIME
.
Поля года, месяца и дня базового класса java.util.Date
устанавливаются в
1970, январь и 1 соответственно. Это "нулевая" дата для Java.
java.sql.Timestamp
для TIMESTAMP
. Этот класс
расширяет java.util.Date
добавлением наносекундного поля.
java.util.Date
, так как
являются дочерними по отношению к нему. Например, методы интернационализации
принимают объект
java.util.Date
в качестве аргумента, поэтому могут передаваться
объекты, являющиеся экземплярами классов JDBC для работы со временем.
Объекты Timestamp
состоят из унаследованных компонентов даты и времени,
а также отдельной компоненты - наносекунды. Если объект
java.sql.Timestamp
используется так, где ожидается
java.util.Date
, то наносекундная составляющая теряется. Тем не менее,
поскольку объект
java.util.Date
хранится с точностью до миллисекунды, эту степень точности
можно сохранить и при конвертировании объекта из
java.sql.Timestamp
в java.util.Date
.
Это делается преобразованием наносекунд в миллисекунды (делением на 1000000)
и прибавлением результата к объекту
java.util.Date
object. При таком преобразовании может быть потеряно
до 999,999 наносекунд, но точность полученного объекта
java.util.Date
будет до одной миллисекундды.
В этом фрагменте кода демонстрируется проеобразование объекта java.sql.Timestamp
в java.util.Date
с точностью до миллисекунды:
Timestamp t = new Timestamp(100, 0, 1, 15, 45, 29, 987245732); java.util.Date d; d = new java.util.Date(t.getTime() + (t.getNanos() / 1000000));
ResultSet
, PreparedStatement
и CallableStatement
.
Далее рассматриваются три сценария.
ResultSet
с результатами. Значение, возвращенное из
БД и сохраненное в колонке
ResultSet
, имеет определенный тип данных. Вызов метода
ResultSet.getXXX
возвращает эти значения согласно типам данных языка
Java. Например, если колонка
ResultSet
содержит значения FLOAT
, то метод
getDouble
считывает это значение как Java-тип
double
. Таблица в разделе
8.6.6 показывает, какие из методов
getXXX
могут использоваться для чтения различных JDBC-типов данных.
(Пользователь, который не знает тип данных колонки
ResultSet
, может получить эту информацию с помощью методов объекта
ResultSet.getMetaData.ResultSetMetaData
getColumnType
или getColumnTypeName
).
Следующий фрагмент кода демонстрирует получение имен типов колонок:
String query = "select * from Table1"; ResultSet rs = stmt.executeQuery(query); ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); for (int i = 1; i <= columnCount; i++) { String s = rsmd.getColumnTypeName(i); System.out.println ("Column " + i + " is type " + s); }
PreparedStatement.setXXX
для присвоения значений каждому входному параметру.
Например, PreparedStatement.setLong(1, 2345678)
присвоит первому параметру
значение long 2345678
. Перед отсылкой в БД драйвер преобразует
2345678
в JDBC-тип данных BIGINT
. Какой именно из
JDBC-типов при этом используется, определяется стандартным отображением
Java-типов на JDBC-типы данных, которое показано в таблице раздела
8.6.2.
В этом сюжете первое, что необходимо сделать, это присвоить значения
параметрам INOUT с помощью методов
PreparedStatement.setXXX
. К тому же, так как параметры также использоваться
и для вывода, программист должен зарегистрировать тип данных каждого параметра.
Это делается методом
CallableStatement.registerOutParameter
, который принимает в виде аргумента
один из JDBC-типов, объявленных в классе Types
.
Программист считывает результаты, возвращенные в объект
ResultSet
, с помощью методов ResultSet.getXXX
,
а значения выходных параметров - с помощью CallableStatement.getXXX
.
Таблица в разделе 8.6.6
показывает, какие из методов ResultSet
.getXXX
использовать для считывания каких JDBC-типов.
Тип XXX
в CallableStatement
.getXXX
должен соответствовать JDBC-типу, зарегистрированному для данного параметра.
Например, если от БД ожидается значение
REAL
, то параметр должен быть зарегистрирован как
java.sql.Types.REAL
. Для получения значения
типа REAL
используется метод
CallableStatement.getFloat
.
Следующий пример демонстрирует вызов хранимой процедуры с названием
getTestData
с двумя INOUT параметрами.
Сначала объект Connection
con
создает объект
CallableStatement
cstmt
. Потом метод
setByte
устанавливает первый параметр в
25
(типа byte
). Драйвер сконвертирует
25
в TINYINT
.
Метод setBigDecimal
устанавливает второй параметр в значение
83.75
. Драйвер сконвертирует его из
java.math.BigDecimal
в значение JDBC NUMERIC
.
Далее регистрируются параметры: первый - как
TINYINT
, второй - DECIMAL
.
После выполнения cstmt
значения считываются из объекта
ResultSet
с помощью методов ResultSet.getXXX
.
Метод getString
получает значение первой колонки в виде
Java-объекта String
, getInt
возвращает
значение второй колонки в виде
int
.
Потом методы CallableStatement.getXXX
извлекают выходные значения
параметров.
Метод getByte
возвращает TINYINT
в виде
byte
, а getBigDecimal
возвращает DECIMAL
в виде java.math.BigDecimal
.
CallableStatement cstmt = con.prepareCall( "{call getTestData(?, ?)}"); cstmt.setByte(1, 25); cstmt.setBigDecimal(2, 83.75); // зарегистрировать первый параметр как JDBC TINYINT, а второй- // как JDBC DECIMAL с двумя цифрами после запятой cstmt.registerOutParameter(1, java.sql.Types.TINYINT); cstmt.registerOutParameter(2, java.sql.Types.DECIMAL, 2); ResultSet rs = cstmt.executeUpdate(); // извлечь и напечатать значения из набора данных while(rs.next()) { String name = rs.getString(1); int score = rs.getInt(2); int percentile = rs.getInt(3); System.out.print("name = " + name + ", score = " + score + ", " System.out.println("percentile = " + percentile); // извлечь значения из выходных параметров byte x = cstmt.getByte(1); java.math.BigDecimal n = cstmt.getBigDecimal(2, 2);"
XXX
" в методах CallableStatement.getXXX
и PreparedStatement.setXXX
- это тип данных Java.
Следующие три метода и одна константа упрощают доступ к таким данным, чьи типы неизвестны на этапе компиляции:
ResultSet.getObject
PreparedStatement.setObject
CallableStatement.getObject
java.sql.Types.OTHER
(используется в виде аргумента метода CallableStatement.registerOutParameter
)
ResultSet
, оно может использовать
метод ResultSet.getObject
.
Методы ResultSet.getObject
и CallableStatement.getObject
возвращают значения в виде объекта
Java Object
. Так как Object
является базовым классом
для всех объектов Java, то экземпляр любого Java-класса может быть получен
как экземпляр типа Object
. Исключением являются встроенные
примитивные типы данных, не являющиеся объектами: boolean
,
char
, byte
, short
, int
, long
, float
и double
. Эти типы данных не могут быть считаны методом
getObject
. Тем не менее каждый примитивный класс имеет свою
объектную "оболочку", то есть представление в виде объекта.
JDBC type | Java type |
---|---|
CHAR
| String
|
VARCHAR
| String
|
LONGVARCHAR
| String
|
NUMERIC
| java.math.BigDecimal
|
DECIMAL
| java.math.BigDecimal
|
BIT
| boolean
|
TINYINT
| byte
|
SMALLINT
| short
|
INTEGER
| int
|
BIGINT
| long
|
REAL
| float
|
FLOAT
| double
|
DOUBLE
| double
|
BINARY
| byte[]
|
VARBINARY
| byte[]
|
LONGVARBINARY
| byte[]
|
DATE
| java.sql.Date
|
TIME
| java.sql.Time
|
TIMESTAMP
| java.sql.Timestamp
|
Java-тип | JDBC-тип |
---|---|
String
| VARCHAR or LONGVARCHAR
|
java.math.BigDecimal
| NUMERIC
|
boolean
| BIT
|
byte
| TINYINT
|
short
| SMALLINT
|
int
| INTEGER
|
long
| BIGINT
|
float
| REAL
|
double
| DOUBLE
|
byte[]
| VARBINARY or LONGVARBINARY
|
java.sql.Date
| DATE
|
java.sql.Time
| TIME
|
java.sql.Timestamp
| TIMESTAMP
|
Отображение String обычно осуществляется в
VARCHAR
, но может и в
LONGVARCHAR
, если длина строки превысит максимально допустимый предел для VARVHAR.
Это же касается и отображения byte[] на VARBINARY и LONGVARBINARY.
boolean
and int
)
не являются объектами, то отображение в случае использования методов
getObject
/setObject
несколько отличается:
JDBC Type | Java Object Type |
---|---|
CHAR
| String
|
VARCHAR
| String
|
LONGVARCHAR
| String
|
NUMERIC
| java.math.BigDecimal
|
DECIMAL
| java.math.BigDecimal
|
BIT
| Boolean
|
TINYINT
| Integer
|
SMALLINT
| Integer
|
INTEGER
| Integer
|
BIGINT
| Long
|
REAL
| Float
|
FLOAT
| Double
|
DOUBLE
| Double
|
BINARY
| byte[]
|
VARBINARY
| byte[]
|
LONGVARBINARY
| byte[]
|
DATE
| java.sql.Date
|
TIME
| java.sql.Time
|
TIMESTAMP
| java.sql.Timestamp
|
Java Object Type | JDBC Type |
---|---|
String
| VARCHAR or LONGVARCHAR
|
java.math.BigDecimal
| NUMERIC
|
Boolean
| BIT
|
Integer
| INTEGER
|
Long
| BIGINT
|
Float
| REAL
|
Double
| DOUBLE
|
byte[]
| VARBINARY or LONGVARBINARY
|
java.sql.Date
| DATE
|
java.sql.Time
| TIME
|
java.sql.Timestamp
| TIMESTAMP
|
Отображение String обычно осуществляется в
VARCHAR
, но может и в
LONGVARCHAR
, если длина строки превысит максимально допустимый предел для VARVHAR.
Это же касается и отображения byte[] на VARBINARY и LONGVARBINARY.
setObject
преобразует объектные типы Java в JDBC-типы.
T I N Y I N T | S M A L L I N T | I N T E G E R | B I G I N T | R E A L | F L O A T | D O U B L E | D E C I M A L | N U M E R I C | B I T | C H A R | V A R C H A R | L O N G V A R C H A R | B I N A R Y | V A R B I N A R Y | L O N G V A R B I N A R Y | D A T E | T I M E | T I M E S T A M P | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
String | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x |
java.math.BigDecimal | x | x | x | x | x | x | x | x | x | x | x | x | x | ||||||
Boolean | x | x | x | x | x | x | x | x | x | x | x | x | x | ||||||
Integer | x | x | x | x | x | x | x | x | x | x | x | x | x | ||||||
Long | x | x | x | x | x | x | x | x | x | x | x | x | x | ||||||
Float | x | x | x | x | x | x | x | x | x | x | x | x | x | ||||||
Double | x | x | x | x | x | x | x | x | x | x | x | x | x | ||||||
byte[] | x | x | x | ||||||||||||||||
java.sql.Date | x | x | x | x | x | ||||||||||||||
java.sql.Time | x | x | x | x | |||||||||||||||
java.sql.Time- stamp | x | x | x | x | x | x |
T I N Y I N T | S M A L L I N T | I N T E G E R | B I G I N T | R E A L | F L O A T | D O U B L E | D E C I M A L | N U M E R I C | B I T | C H A R | V A R C H A R | L O N G V A R C H A R | B I N A R Y | V A R B I N A R Y | L O N G V A R B I N A R Y | D A T E | T I M E | T I M E S T A M P | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
getByte | X | x | x | x | x | x | x | x | x | x | x | x | x | ||||||
getShort | x | X | x | x | x | x | x | x | x | x | x | x | x | ||||||
getInt | x | x | X | x | x | x | x | x | x | x | x | x | x | ||||||
getLong | x | x | x | X | x | x | x | x | x | x | x | x | x | ||||||
getFloat | x | x | x | x | X | x | x | x | x | x | x | x | x | ||||||
getDouble | x | x | x | x | x | X | X | x | x | x | x | x | x | ||||||
getBigDecimal | x | x | x | x | x | x | x | X | X | x | x | x | x | ||||||
getBoolean | x | x | x | x | x | x | x | x | x | X | x | x | x | ||||||
getString | x | x | x | x | x | x | x | x | x | x | X | X | x | x | x | x | x | x | x |
getBytes | X | X | x | ||||||||||||||||
getDate | x | x | x | X | x | ||||||||||||||
getTime | x | x | x | X | x | ||||||||||||||
getTimestamp | x | x | x | x | X | ||||||||||||||
getAsciiStream | x | x | X | x | x | x | |||||||||||||
getUnicodeStream | x | x | X | x | x | x | |||||||||||||
getBinaryStream | x | x | X | ||||||||||||||||
getObject | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x |