zoukankan      html  css  js  c++  java
  • JDBC数据类型

    JDBC数据类型

    JDBC驱动程序Java数据类型转换到适当的JDBC类型然后再将它发送到数据库。它使用默认的大多数数据类型映射。例如,一个Java int转换成一个SQL INTEGER。创建默认映射驱动器之间提供一致性。

    下表总结了默认的JDBC数据类型的Java数据类型转换,当调用setXXX()方法的PreparedStatement或CallableStatement对象或ResultSet.updateXXX()方法。

    SQLJDBC/JavasetXXXupdateXXX
    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()方法为每个数据类型来检索列值。每一种方法,可以使用与列名或由它的序号位置。

    SQLJDBC/JavasetXXXgetXXX
    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.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值呢?有三种方法可以使用:

    1. 避免使用getXXX()方法返回的原始数据类型。

    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;
    }
  • 相关阅读:
    [算法] 堆栈
    [刷题] PTA 02-线性结构3 Reversing Linked List
    java IO流 (八) RandomAccessFile的使用
    java IO流 (七) 对象流的使用
    java IO流 (六) 其它的流的使用
    java IO流 (五) 转换流的使用 以及编码集
    java IO流 (四) 缓冲流的使用
    java IO流 (三) 节点流(或文件流)
    java IO流 (二) IO流概述
    java IO流 (一) File类的使用
  • 原文地址:https://www.cnblogs.com/jasonjiang/p/4650779.html
Copyright © 2011-2022 走看看