如下內容引用自http://wiki.jikexueyuan.com/project/jdbc/data-types.html:html
JDBC驅動程序在將Java數據類型發送到數據庫以前,會將其轉換爲相應的JDBC類型。對於大多數數據類型都採用了默認的映射關係。例如,一個Java int數據類型轉換爲SQL INTEGER。經過默認的映射關係來提供驅動程序之間的一致性。java
當調用PreparedStatement中的setXXX()方法或CallableStatement對象或ResultSet.updateXXX()方法時,Java數據類型會轉換爲默認的JDBC數據類型,以下表概述。git
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()方法,經過這些方法能夠直接操做服務器上的相應數據。github
能用setXXX()方法和updateXXX()方法將Java類型轉換爲特定的JDBC數據類型。能用setObject()方法和updateObject()方法將絕大部分的Java類型映射到JDBC數據類型。sql
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 |
1、日期和時間數據類型服務器
java.sql.Date類映射SQL DATE類型,java.sql.Time類和java.sql.Timestamp類也分別映射SQL TIME數據類型和SQL TIMESTAMP數據類型。測試
如下示例顯示了日期和時間類如何轉換成標準的Java日期和時間值,並匹配成SQL數據類型所要求的格式。spa
import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; import java.util.*; public class SqlDateTime { public static void main(String[] args) { // Get standard date and time java.util.Date javaDate = new java.util.Date(); long javaTime = javaDate.getTime(); System.out.println("The Java Date is:" + javaDate.toString()); // Get and display SQL DATE java.sql.Date sqlDate = new java.sql.Date(javaTime); System.out.println("The SQL DATE is: " + sqlDate.toString()); // Get and display SQL TIME java.sql.Time sqlTime = new java.sql.Time(javaTime); System.out.println("The SQL TIME is: " + sqlTime.toString()); // Get and display SQL TIMESTAMP java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(javaTime); System.out.println("The SQL TIMESTAMP is: " + sqlTimestamp.toString()); }// end main }// end SqlDateTime
這將產生以下所示結果:code
2、處理NULL值
SQL使用NULL值和Java使用null是不一樣的概念。那麼,能夠使用三種策略來處理Java中的SQL NULL值:
下面是一個處理NULL值的示例:
Statement stmt = conn.createStatement( ); String sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql); int id = rs.getInt(1); if( rs.wasNull( ) ) { id = 0; }
測試工程:https://github.com/easonjim/5_java_example/tree/master/jdbcbasics/test4