Java、JDBC与MySQL数据类型对照数据类型之间的转换



Java、JDBC与MySQL数据类型对照数据类型之间的转换。MySQL Connector/J能够方便地处理MySQL数据类型和Java数据类型之间的转换。几乎所有的MySQL数据类型都能够被转换为java.lang.String类型,任何数字类型能够被转换成任意的Java数字类型,但要注意的是某些情况下会出现取舍、溢出或者精度丢失的错误情况。

自Connector/J 3.1.0开始,JDBC驱动程序可以遵照JDBC规范给出相应的警告信息以及抛出DataTruncation异常,除非通过用jdbcCompliantTruncation属性来显式地配置连接并把其设置为false。

MySQL中的数据类型 可以被转换为Java中的如下数据类型
CHAR, VARCHAR, BLOB, TEXT, ENUM, 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, DECIMAL,   INTEGER, BIGINT java.lang.String, java.lang.Short, java.lang.Integer,java.math.BigDecimal, java.lang.Long, java.lang.Double
DATE, TIME, DATETIME, TIMESTAMP java.lang.String, java.sql.Date, java.sql.Timestamp

ResultSet.getObject() 方法会使用MySQL和Java数据类型之间的类型转换,而且要遵照如下规则:

MySQL数据类型 返回的Java类型
BIT(1) java.lang.Boolean
BIT(>1) byte[]
TINYINT 如果tinyInt1isBit配置属性被设置成true并且存储大小为1时,
那么转换成java.lang.Boolean,否则转换为java.lang.Integer
BOOL, BOOLEAN 等同于TINYINT(1)的情况,请参照TINYINT的转换规则
SMALLINT java.lang.Integer
MEDIUMINT 转换为java.lang.Integer类型,如果为无符号数,
那么转换为java.lang.Long(C/J 3.1或者之前版本),或者java.lang.Integer (C/J 5.0或者之后版本)
INT, INTEGER java.lang.Integer,如果为无符号数,那么转换为java.lang.Long类型
BIGINT java.lang.Long,如果为无符号数,那么转换为java.math.BigInteger类型
FLOAT java.lang.Float
DOUBLE java.lang.Double
DECIMAL java.math.BigDecimal
DATE java.sql.Date
DATETIME java.sql.Timestamp
TIMESTAMP java.sql.Timestamp
TIME java.sql.Time
YEAR 如果yearIsDateType配置属性被设置为false,那么返回的对象类型为java.sql.Short。
如果设置为true,那么会返回java.sql.Date对象,并且日期被设置为1月1日午夜
CHAR java.lang.String,除非该列的字符集为BINARY,那么将返回byte[]
VARCHAR java.lang.String,除非该列的字符集为BINARY,那么将返回byte[]
BINARY byte[]
VARBINARY byte[]
TINYBLOB byte[]
TINYINT java.lang.String
BLOB byte[]
TEXT java.lang.String
MEDIUMBLOB byte[]
MEDIUMTEXT java.lang.String
LONGBLOB byte[]
LONGTEXT java.lang.String
ENUM(‘value1′,’value2′,…) java.lang.String
SET(‘value1′,’value2′,…) java.lang.String

如有需要请参考mysql官方的文档:http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-type-conversions.html。