JDBC數據類型

JDBC數據類型

JDBC驅動程序Java數據類型轉換到適當的JDBC類型而後再將它發送到數據庫。它使用默認的大多數數據類型映射。例如,一個Java int轉換成一個SQL INTEGER。建立默認映射驅動器之間提供一致性。

下表總結了默認的JDBC數據類型的Java數據類型轉換,當調用setXXX()方法的PreparedStatement或CallableStatement對象或ResultSet.updateXXX()方法。java

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()方法,使您能夠在服務器上直接操做相應的數據。sql

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數據類型。yii

如下示例顯示瞭如何的格式的日期和時間類標準的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

如今讓咱們來編譯上面的例子以下:spa

C:\>javac SqlDateTime.java
C:\>

當你運行JDBCExample的,它會產生如下結果:對象

C:\>java SqlDateTime
The Java Date is:Tue Aug 18 13:46:02 GMT+04:00 2009
The SQL DATE is: 2009-08-18
The SQL TIME is: 13:46:02
The SQL TIMESTAMP is: 2009-08-18 13:46:02.828
C:\>

處理NULL值:

SQL使用NULL值和Java的使用null是不一樣的概念。那麼如何在Java中處理SQL NULL值呢?有三種方法能夠使用:ci

  1. 避免使用getXXX()方法返回的原始數據類型。get

  2. 使用原始數據類型的包裝類,並使用ResultSet對象的wasNull()方法來測試的getXXX()方法返回的包裝類變量的值是否應被設置爲null。

  3. 使用原始數據類型和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;
}
相關文章
相關標籤/搜索