Java,JDBC和MySQL类型--MySql数据库 博客分类: 基础 MySQLJavaJDBCSQLJ# MySQL Connector/J在处理My
Java,JDBC和MySQL类型--MySql数据库
MySQL Connector/J在处理MySQL数据类型和Java数据类型的转换处理方面十分灵活。?
尽管可能会出现舍入、溢出或精度损失,当在通常情况下,能够将任何MySQL数据类型转换为java.lang.String,并能将任何数值类型转换为Java数值类型。?
从Connector/J 3.1.0开始,按照JDBC规范的要求,JDBC驱动程序将发出警告或抛出DataTruncation异常,除非通过使用“jdbcCompliantTruncation”属性并将其设为“假”,对连接进行相应配置取消了前述要求。?
在下面的表格中,列出能可靠工作的转换:?
表26.2. 转换表?
下述MySQL数据类型?
总能转换为下述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?
注释:?
与希望转换的MySQL数据类型相比,如果选择了精度较低的Java数值类型,可能会出现舍入、溢出或精度损失。?
DATE, TIME, DATETIME, TIMESTAMP?
java.lang.String, java.sql.Date, java.sql.Timestamp?
在MySQL类型和Java类型之间,ResultSet.getObject()方法采用了下述类型转换方式,在可能的情况下遵从JDBC规范:?
表26.3. 用于ResultSet.getObject()的MySQL类型和Java类型?
MySQL类型名称??????????????????????????????????? 以Java类返回?
BIT(1) (new in MySQL-5.0)?????????????? java.lang.Boolean?
BIT( > 1) (new in MySQL-5.0)??????????? byte[]?
TINYINT??????????????????????????????? java.lang.Boolean,如果将配置属?
???????????????????????????????????????????? 性“tinyInt1isBit”设为“真”(默认值),并将存储大小设为“1”;或java.lang.Integer,如果不是的话。?
BOOL ,??????????????????????????????? BOOLEAN?
???????????????????????????????????? 请参见上面的TINYINT,它们目前是TINYINT(1)的别名。?
SMALLINT[(M)] [UNSIGNED]????????????? java.lang.Integer(无论是否为UNSIGNED)?
MEDIUMINT[(M)] [UNSIGNED]???????????? java.lang.Integer(无论是否为UNSIGNED)?
INT,INTEGER[(M)] [UNSIGNED]??????????? java.lang.Integer,如果是UNSIGNED,java.lang.Long?
BIGINT[(M)] [UNSIGNED]???????????????? java.lang.Long,如果是UNSIGNED,java.math.BigInteger?
FLOAT[(M,D)]????????????????????????? java.lang.Float?
DOUBLE[(M,B)]???????????????????????? java.lang.Double?
DECIMAL[(M[,D])]????????????????????? java.math.BigDecimal?
DATE????????????????????????????????? java.sql.Date?
DATETIME????????????????????????????? java.sql.Timestamp?
TIMESTAMP[(M)]??????????????????????? java.sql.Timestamp?
TIME????????????????????????????????? java.sql.Time?
YEAR[(2|4)]????????????????????????? java.sql.Date(日期设为2月1日晚上2点)?
CHAR(M)????????????????????????????? java.lang.String(除非列的字符集是BINARY),然后返回字节[]?
VARCHAR(M) [BINARY]????????????????? java.lang.String(除非列的字符集是BINARY),然后返回字节[]?
BINARY(M)???????????????????????????? byte[]?
VARBINARY(M)????????????????????????? byte[]?
TINYBLOB????????????????????????????? byte[]?
TINYTEXT????????????????????????????? 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?