下表總結了默認的JDBC數據類型的Java數據類型轉換,當調用setXXX()方法的PReparedStatement或CallableStatement對象或ResultSet.updateXXX()方法。
| 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 |
JDBC3.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和SQL TIMESTAMP數據類型。
以下示例顯示了如何的格式的日期和時間類標準的Java日期和時間值相匹配的SQL數據類型需求。
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 by www.yiibai.com 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現在讓我們來編譯上面的例子如下:
C:/>javac SqlDateTime.javaC:/>
當你運行JDBCExample的,它會產生以下結果:
C:/>java SqlDateTimeThe Java Date is:Tue Aug 18 13:46:02 GMT+04:00 2009The SQL DATE is: 2009-08-18The SQL TIME is: 13:46:02The SQL TIMESTAMP is: 2009-08-18 13:46:02.828C:/>處理NULL值:
SQL使用NULL值和Java的使用null是不同的概念。那么如何在Java中處理SQL NULL值呢?有三種方法可以使用:
避免使用getXXX()方法返回的原始數據類型。
使用原始數據類型的包裝類,并使用ResultSet對象的wasNull()方法來測試的getXXX()方法返回的包裝類變量的值是否應被設置為null。
使用原始數據類型和ResultSet對象的wasNull()方法來測試是否收到原始變量,返回的值的getXXX()方法將被設置為選擇一個可接受的值代表一個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;}新聞熱點
疑難解答