Spec-Zone .ru
спецификации, руководства, описания, API

21.3.5.3. Java, JDBC и MySQL Types

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 классы видят Java 2 Типа Платформы.

Таблица 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