JDBC 驱动程序在将 Java 数据类型发送到数据库之前,会将其转换为相应的 JDBC 类型。对于大多数数据类型都采用了默认的映射关系。例如,一个 Java int 数据类型转换为 SQL INTEGER。通过默认的映射关系来提供驱动程序之间的一致性。
当你调用 PreparedStatement 中的 setXXX()方法或 CallableStatement 对象或 ResultSet.updateXXX()方法时, Java 数据类型会转换为默认的 JDBC 数据类型,如下表概述。
| SQL | JDBC/Java | setXXX | updateXXX | 
|---|---|---|---|
| VARCHAR | java.lang.String | setString | updateString | 
| CHAR | java.lang.String | setString | updateString | 
| LONGVARCHAR | java.lang.String | setString | updateString | 
| BIT | boolean | setBoolean | updateBoolean | 
| NUMERIC | java.math.BigDecimal | setBigDecimal | updateBigDecimal | 
| TINYINT | byte | setByte | updateByte | 
| SMALLINT | short | setShort | updateShort | 
| INTEGER | int | setInt | updateInt | 
| BIGINT | long | setLong | updateLong | 
| REAL | float | setFloat | updateFloat | 
| FLOAT | float | setFloat | updateFloat | 
| DOUBLE | double | setDouble | updateDouble | 
| VARBINARY | byte[ ] | setBytes | updateBytes | 
| BINARY | byte[ ] | setBytes | updateBytes | 
| DATE | java.sql.Date | setDate | updateDate | 
| TIME | java.sql.Time | setTime | updateTime | 
| TIMESTAMP | java.sql.Timestamp | setTimestamp | updateTimestamp | 
| CLOB | java.sql.Clob | setClob | updateClob | 
| BLOB | java.sql.Blob | setBlob | updateBlob | 
| ARRAY | java.sql.Array | setARRAY | updateARRAY | 
| REF | java.sql.Ref | SetRef | updateRef | 
| STRUCT | java.sql.Struct | SetStruct | updateStruct | 
JDBC 3.0 增强了对 BLOB,CLOB,ARRAY 和 REF 数据类型的支持。 ResultSet 对象现在有 UPDATEBLOB(),updateCLOB(), updateArray(),和 updateRef()方法,通过这些方法你可以直接操作服务器上的相应数据。
你能用 setXXX()方法和 updateXXX()方法将 Java 类型转换为特定的 JDBC 数据类型。你能用 setObject()方法和 updateObject()方法将绝大部分的 Java 类型映射到 JDBC 数据类型。
ResultSet 对象为任一数据类型提供相应的 getXXX()方法,该方法可以获取任一数据类型的列值。上述任一方法的使用需要列名或它的顺序位置。
| SQL | JDBC/Java | setXXX | getXXX | 
|---|---|---|---|
| VARCHAR | java.lang.String | setString | getString | 
| CHAR | java.lang.String | setString | getString | 
| LONGVARCHAR | java.lang.String | setString | getString | 
| BIT | boolean | setBoolean | getBoolean | 
| NUMERIC | java.math.BigDecimal | setBigDecimal | getBigDecimal | 
| TINYINT | byte | setByte | getByte | 
| SMALLINT | short | setShort | getShort | 
| INTEGER | int | setInt | getInt | 
| BIGINT | long | setLong | getLong | 
| REAL | float | setFloat | getFloat | 
| FLOAT | float | setFloat | getFloat | 
| DOUBLE | double | setDouble | getDouble | 
| VARBINARY | byte[ ] | setBytes | getBytes | 
| BINARY | byte[ ] | setBytes | getBytes | 
| DATE | java.sql.Date | setDate | getDate | 
| TIME | java.sql.Time | setTime | getTime | 
| TIMESTAMP | java.sql.Timestamp | setTimestamp | getTimestamp | 
| CLOB | java.sql.Clob | setClob | getClob | 
| BLOB | java.sql.Blob | setBlob | getBlob | 
| ARRAY | java.sql.Array | setARRAY | getARRAY | 
| REF | java.sql.Ref | SetRef | getRef | 
| STRUCT | java.sql.Struct | SetStruct | getStruct | 
日期和时间数据类型
java.sql.Date 类映射 SQL DATE 类型,java.sql.Time 类和 java.sql.Timestamp 类也分别映射 SQL TIME 数据类型和 SQL TIMESTAMP 数据类型。
以下示例显示了日期和时间类如何转换成标准的 Java 日期和时间值,并匹配成 SQL 数据类型所要求的格式。