MySQL数据类型 |
JAVA数据类型 |
JDBC TYPE |
普通变量类型 |
主键类型 |
BIGINT |
Long |
BIGINT |
支持 |
支持 |
TINYINT |
Byte |
TINYINT |
支持 |
不支持 |
SMALLINT |
Short |
SMALLINT |
支持 |
不支持 |
MEDIUMINT |
Integer |
INTEGER |
支持 |
支持 |
INTEGER |
Integer |
INTEGER |
支持 |
支持 |
INT |
Integer |
INTEGER |
支持 |
支持 |
FLOAT |
Float |
REAL |
支持 |
不支持 |
DOUBLE |
Double |
DOUBLE |
支持 |
不支持 |
DECIMAL |
BigDecimal |
DECIMAL |
支持 |
不支持 |
NUMERIC |
BigDecimal |
DECIMAL |
支持 |
不支持 |
CHAR |
String |
CHAR |
支持 |
不支持 |
VARCHAR |
String |
VARCHAR |
支持 |
不支持 |
TINYBLOB |
DataTypeWithBLOBs.byte[] |
BINARY |
不支持 |
不支持 |
TINYTEXT |
String |
VARCHAR |
支持 |
不支持 |
BLOB |
DataTypeWithBLOBs.byte[] |
BINARY |
不支持 |
不支持 |
TEXT |
DataTypeWithBLOBs.String |
LONGVARCHAR |
不支持 |
不支持 |
MEDIUMBLOB |
DataTypeWithBLOBs.byte[] |
LONGVARBINARY |
不支持 |
不支持 |
MEDIUMTEXT |
DataTypeWithBLOBs.String |
LONGVARCHAR |
不支持 |
不支持 |
LONGBLOB |
DataTypeWithBLOBs.byte[] |
LONGVARBINARY |
不支持 |
不支持 |
LONGTEXT |
DataTypeWithBLOBs.String |
LONGVARCHAR |
不支持 |
不支持 |
DATE |
Date |
DATE |
支持 |
不支持 |
TIME |
Date |
TIME |
支持 |
不支持 |
YEAR |
Date |
DATE |
不支持 |
不支持 |
DATETIME |
Date |
TIMESTAMP |
支持 |
不支持 |
TIMESTAMP |
Date |
TIMESTAMP |
支持 |
不支持 |
以下是商业数据库的。
|
java.sql.Types 值 |
Java 类型 |
IBM DB2 |
Oracle |
Sybase |
SQL |
Informix |
IBM Content Manager |
|
BIGINT |
java.lang.long |
BIGINT |
NUMBER (38, 0) |
BIGINT |
BIGINT |
INT8 |
DK_CM_BIGINT |
|
BINARY |
byte[] |
CHAR FOR BIT DATA |
RAW |
BINARY |
IMAGE |
BYTE |
DK_CM_BLOB |
|
BIT |
java.lang.Boolean |
N/A |
BIT |
BIT |
BIT |
BIT |
DK_CM_SMALLINT |
|
BLOB |
byte[] |
BLOB |
BLOB |
BLOB |
BLOB |
BLOB |
DK_CM_BLOB |
|
CHAR |
java.lang.String |
CHAR, GRAPHIC |
CHAR |
CHAR |
CHAR |
CHAR |
DK_CM_CHAR |
|
CLOB |
java.lang.String |
CLOB, DBCLOB |
CLOB |
CLOB |
CLOB |
CLOB |
DK_CM_CLOB |
|
DATE |
java.sql.Date |
DATE |
DATE |
DATE |
DATE |
DATE |
DK_CM_DATE |
|
DECIMAL |
java.math.BigDecimal |
DECIMAL |
NUMBER |
DECIMAL, MONEY, SMALLMONEY |
DECIMAL |
DECIMAL |
DK_CM_DECIMAL |
|
DOUBLE |
java.lang.Double |
DOUBLE |
DOUBLE PRECISION |
DOUBLE PRECISION |
DOUBLE PRECISION |
DOUBLE PRECISION |
DK_CM_DOUBLE |
|
FLOAT |
java.lang.Double |
FLOAT |
FLOAT |
FLOAT |
FLOAT |
FLOAT |
DK_CM_DOUBLE |
|
INTEGER |
java.lang.Integer |
INTEGER |
INTEGER |
INT |
INTEGER |
INTEGER |
DK_CM_INTEGER |
|
JAVA_OBJECT |
java.lang.Object |
JAVA_OBJECT |
JAVA_OBJECT |
JAVA_OBJECT |
JAVA_OBJECT |
OPAQUE |
N/A |
|
LONGVARBINARY |
byte[] |
LONG VARCHAR FOR BIT DATA |
LONG RAW |
IMAGE |
IMAGE |
BYTE |
DK_CM_BLOB |
|
LONGVARCHAR |
java.lang.String |
LONG VARCHAR, LONG VARGRAPHIC |
LONG |
TEXT |
TEXT |
TEXT |
DK_CM_VARCHAR(3500) |
|
NUMERIC |
java.math.BigDecimal |
NUMERIC |
NUMBER |
NUMERIC |
NUMERIC |
NUMERIC |
DK_CM_DECIMAL |
|
OTHER |
java.lang.Object |
OTHER |
OTHER |
OTHER |
OTHER |
OTHER |
N/A |
|
REAL |
java.lang.Float |
REAL |
REAL |
REAL |
REAL |
REAL |
DK_CM_DOUBLE |
|
SMALLINT |
java.lang.Integer |
SMALLINT |
SMALLINT |
SMALLINT |
SMALLINT |
SMALLINT |
DK_CM_INTEGER |
|
TIME |
java.sql.Time |
TIME |
DATE |
TIME |
TIME |
DATETIME HOUR TO SECOND |
DK_CM_TIME |
|
TIMESTAMP |
java.sql.Timestamp |
TIMESTAMP |
DATE |
DATETIME, SMALLDATETIME |
DATETIME |
DATETIME YEAR TO FRACTION (5) |
DK_CM_TIMESTAMP |
|
TINYINT |
java.lang.Bute |
SMALLINT |
TINYINT
|
TINYINT |
TINYINT |
TINYINT |
DK_CM_INTEGER |
|
VARBINARY |
byte[] |
VARCHAR FOR BIT DATA |
RAW |
VARBINARY |
IMAGE |
BYTE |
DK_CM_BLOB |
|
VARCHAR |
java.lang.String |
VARCHAR, VARGRAPHIC |
VARCHAR |
VARCHAR |
VARCHAR |
VARCHAR |
DK_CM_VARCHAR |
Oracle ResultSetMetaData getPrecision/getScale有一个bug,count(*) as xxx、abs(col) as xxx,这样xxx是无法返回正确的Scale和Precision的,要想这些情况下返回正确的值,需要使用明确的cast(xxx as datatype)。参见https://stackoverflow.com/questions/1410267/oracle-resultsetmetadata-getprecision-getscale
|
java.sql.Types 值 |
Java 类型 |
IBM DB2 |
Oracle |
Sybase |
SQL |
Informix |
IBM Content Manager |
|
BIGINT |
java.lang.long |
BIGINT |
NUMBER (38, 0) |
BIGINT |
BIGINT |
INT8 |
DK_CM_BIGINT |
|
BINARY |
byte[] |
CHAR FOR BIT DATA |
RAW |
BINARY |
IMAGE |
BYTE |
DK_CM_BLOB |
|
BIT |
java.lang.Boolean |
N/A |
BIT |
BIT |
BIT |
BIT |
DK_CM_SMALLINT |
|
BLOB |
byte[] |
BLOB |
BLOB |
BLOB |
BLOB |
BLOB |
DK_CM_BLOB |
|
CHAR |
java.lang.String |
CHAR, GRAPHIC |
CHAR |
CHAR |
CHAR |
CHAR |
DK_CM_CHAR |
|
CLOB |
java.lang.String |
CLOB, DBCLOB |
CLOB |
CLOB |
CLOB |
CLOB |
DK_CM_CLOB |
|
DATE |
java.sql.Date |
DATE |
DATE |
DATE |
DATE |
DATE |
DK_CM_DATE |
|
DECIMAL |
java.math.BigDecimal |
DECIMAL |
NUMBER |
DECIMAL, MONEY, SMALLMONEY |
DECIMAL |
DECIMAL |
DK_CM_DECIMAL |
|
DOUBLE |
java.lang.Double |
DOUBLE |
DOUBLE PRECISION |
DOUBLE PRECISION |
DOUBLE PRECISION |
DOUBLE PRECISION |
DK_CM_DOUBLE |
|
FLOAT |
java.lang.Double |
FLOAT |
FLOAT |
FLOAT |
FLOAT |
FLOAT |
DK_CM_DOUBLE |
|
INTEGER |
java.lang.Integer |
INTEGER |
INTEGER |
INT |
INTEGER |
INTEGER |
DK_CM_INTEGER |
|
JAVA_OBJECT |
java.lang.Object |
JAVA_OBJECT |
JAVA_OBJECT |
JAVA_OBJECT |
JAVA_OBJECT |
OPAQUE |
N/A |
|
LONGVARBINARY |
byte[] |
LONG VARCHAR FOR BIT DATA |
LONG RAW |
IMAGE |
IMAGE |
BYTE |
DK_CM_BLOB |
|
LONGVARCHAR |
java.lang.String |
LONG VARCHAR, LONG VARGRAPHIC |
LONG |
TEXT |
TEXT |
TEXT |
DK_CM_VARCHAR(3500) |
|
NUMERIC |
java.math.BigDecimal |
NUMERIC |
NUMBER |
NUMERIC |
NUMERIC |
NUMERIC |
DK_CM_DECIMAL |
|
OTHER |
java.lang.Object |
OTHER |
OTHER |
OTHER |
OTHER |
OTHER |
N/A |
|
REAL |
java.lang.Float |
REAL |
REAL |
REAL |
REAL |
REAL |
DK_CM_DOUBLE |
|
SMALLINT |
java.lang.Integer |
SMALLINT |
SMALLINT |
SMALLINT |
SMALLINT |
SMALLINT |
DK_CM_INTEGER |
|
TIME |
java.sql.Time |
TIME |
DATE |
TIME |
TIME |
DATETIME HOUR TO SECOND |
DK_CM_TIME |
|
TIMESTAMP |
java.sql.Timestamp |
TIMESTAMP |
DATE |
DATETIME, SMALLDATETIME |
DATETIME |
DATETIME YEAR TO FRACTION (5) |
DK_CM_TIMESTAMP |
|
TINYINT |
java.lang.Bute |
SMALLINT |
TINYINT |
TINYINT |
TINYINT |
TINYINT |
DK_CM_INTEGER |
|
VARBINARY |
byte[] |
VARCHAR FOR BIT DATA |
RAW |
VARBINARY |
IMAGE |
BYTE |
DK_CM_BLOB |
|
VARCHAR |
java.lang.String |
VARCHAR, VARGRAPHIC |
VARCHAR |
VARCHAR |
VARCHAR |
VARCHAR |
DK_CM_VARCHAR |