Spec-Zone .ru
спецификации, руководства, описания, API
|
MySQL, Connector/J, гибок в способе, которым он обрабатывает преобразования между типами данных MySQL и типами данных Java.
Вообще, любой тип данных MySQL может быть преобразован в a java.lang.String
, и
любой числовой тип может быть преобразован в любой Java числовые типы, хотя округление, переполнение, или потеря
точности могут произойти.
Все TEXT
возврат типов Types.LONGVARCHAR
с различным getPrecision()
значения (65535, 255, 16777215, и 2147483647
соответственно) с getColumnType()
возврат -1
. Это
поведение является намеренным даже при том, что TINYTEXT
не падает,
относительно к его размеру, в пределах LONGVARCHAR
категория. Это должно
избежать различной обработки в том же самом базовом типе. И getColumnType()
возвраты -1
потому что внутренняя обработка сервера имеет тип TEXT
, который подобен BLOB
.
Также отметьте это getColumnTypeName()
возвратится VARCHAR
даже при том, что getColumnType()
возвраты
Types.LONGVARCHAR
, потому что VARCHAR
определяемый
столбец специфичное для базы данных имя для этого типа.
Запускаясь с Connector/J 3.1.0, драйвер JDBC выпускает предупреждения или броски DataTruncation
исключения, как требуется спецификацией JDBC, если соединение не было сконфигурировано, чтобы не сделать так при
использовании свойства jdbcCompliantTruncation
и установка этого к false
.
Преобразования, которые, как всегда гарантируют, будут работать, перечисляются в следующей таблице. Первые списки столбцов один или более типов данных MySQL, и вторые списки столбцов один или более типов Java, в которые могут быть преобразованы типы MySQL.
Таблица 21.24. Свойства соединения - Разное
Они MySQL Data Types | Может всегда преобразовываться в эти типы Java |
---|---|
CHAR, VARCHAR, BLOB, TEXT, ENUM, and SET |
java.lang.String, java.io.InputStream, java.io.Reader, java.sql.Blob,
java.sql.Clob |
FLOAT, REAL, DOUBLE PRECISION, NUMERIC, DECIMAL, TINYINT,
SMALLINT, MEDIUMINT, INTEGER, BIGINT |
java.lang.String, java.lang.Short, java.lang.Integer, java.lang.Long,
java.lang.Double,java.math.BigDecimal |
DATE, TIME, DATETIME, TIMESTAMP |
java.lang.String, java.sql.Date, java.sql.Timestamp |
Округление, переполнение или потеря точности могут произойти, если Вы выбираете тип числовых данных Java, у которого есть меньше точности или емкости чем тип данных MySQL, в который Вы преобразовываете.
ResultSet.getObject()
метод использует преобразования типов между MySQL и типами
Java, после спецификации JDBC где необходимо. Значение, возвращенное ResultSetMetaData.GetColumnClassName()
также показывается ниже. Для получения дополнительной информации по java.sql.Types
классы видят
Таблица 21.25. MySQL Types к Типам Java для ResultSet.getObject ()
MySQL Type Name | Возвращаемое значение GetColumnClassName |
Возвращенный как Класс Java |
---|---|---|
BIT(1) (новый в MySQL 5.0) |
BIT |
java.lang.Boolean |
BIT( > 1) (новый в MySQL 5.0) |
BIT |
byte[] |
TINYINT |
TINYINT |
java.lang.Boolean если свойство конфигурации tinyInt1isBit устанавливается в true
(значение по умолчанию), и размер хранения 1, или java.lang.Integer если нет.
|
BOOL , BOOLEAN |
TINYINT |
См. TINYINT , выше, поскольку они - псевдонимы для TINYINT(1) , в настоящий момент.
|
SMALLINT[(M)] [UNSIGNED] |
SMALLINT [UNSIGNED] |
java.lang.Integer (независимо, если UNSIGNED
или не)
|
MEDIUMINT[(M)] [UNSIGNED] |
MEDIUMINT [UNSIGNED] |
java.lang.Integer, если UNSIGNED
java.lang.Long (C/J 3.1 и ранее), или java.lang.Integer
для C/J 5.0 и позже
|
INT,INTEGER[(M)] [UNSIGNED] |
INTEGER [UNSIGNED] |
java.lang.Integer , если UNSIGNED
java.lang.Long |
BIGINT[(M)] [UNSIGNED] |
BIGINT [UNSIGNED] |
java.lang.Long , если БЕЗ ЗНАКА java.math.BigInteger
|
FLOAT[(M,D)] |
FLOAT |
java.lang.Float |
DOUBLE[(M,B)] |
DOUBLE |
java.lang.Double |
DECIMAL[(M[,D])] |
DECIMAL |
java.math.BigDecimal |
DATE |
DATE |
java.sql.Date |
DATETIME |
DATETIME |
java.sql.Timestamp |
TIMESTAMP[(M)] |
TIMESTAMP |
java.sql.Timestamp |
TIME |
TIME |
java.sql.Time |
YEAR[(2|4)] |
YEAR |
Если yearIsDateType свойство конфигурации устанавливается в false , тогда возвращенный объектный тип java.sql.Short .
Если установлено в true (значение по умолчанию), тогда возвращенный
объект имеет тип java.sql.Date с набором даты до 1-ого января, в
полночь.
|
CHAR(M) |
CHAR |
java.lang.String (если набор символов для столбца не BINARY , тогда byte[] возвращается.
|
VARCHAR(M) [BINARY] |
VARCHAR |
java.lang.String (если набор символов для столбца не BINARY , тогдаbyte[] возвращается.
|
BINARY(M) |
BINARY |
byte[] |
VARBINARY(M) |
VARBINARY |
byte[] |
TINYBLOB |
TINYBLOB |
byte[] |
TINYTEXT |
VARCHAR |
java.lang.String |
BLOB |
BLOB |
byte[] |
TEXT |
VARCHAR |
java.lang.String |
MEDIUMBLOB |
MEDIUMBLOB |
byte[] |
MEDIUMTEXT |
VARCHAR |
java.lang.String |
LONGBLOB |
LONGBLOB |
byte[] |
LONGTEXT |
VARCHAR |
java.lang.String |
ENUM('value1','value2',...) |
CHAR |
java.lang.String |
SET('value1','value2',...) |
CHAR |
java.lang.String |