|
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 |