• JDBC数据类型


     

    JDBC驱动程序将Java数据类型转换为适当的JDBC类型,然后将其发送到数据库。 它为大多数数据类型提供并使用默认映射。 例如,Java int类型会被转换为SQL INTEGER。 创建默认映射以提供到驱动程序时保持一致性。

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

    SQL类型JDBC/Java类型setXXXupdateXXX
    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增强了对BLOBCLOBARRAYREF数据类型的支持。 ResultSet对象现在具有updateBLOB()updateCLOB()updateArray()updateRef()方法,使您能够直接操作数据库服务器上的相应数据。

    setXXX()updateXXX()方法可以将特定的Java类型转换为特定的JDBC数据类型。 方法setObject()updateObject()可以将几乎任何Java类型映射到JDBC数据类型。

    ResultSet对象为每个数据类型提供相应的getXXX()方法来检索列值。每个方法都可以使用列名或其序数位置来检索列值。

    SQL类型JDBC/Java类型setXXXupdateXXX
    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.Timejava.sql.Timestamp类分别映射到SQL TIME和SQL TIMESTAMP数据类型。

    以下示例显示了DateTime类如何格式化为标准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
          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
    
    Java

    编译并执行上面代码,得到以下结果 -

    F:workspjdbc>javac SqlDateTime.java
    
    F:workspjdbc>java SqlDateTime
    The Java Date is:Wed May 31 23:54:57 CST 2017
    The SQL DATE is: 2017-05-31
    The SQL TIME is: 23:54:57
    The SQL TIMESTAMP is: 2017-05-31 23:54:57.937
    
    F:workspjdbc>
    
    Shell

    处理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;
    }
    

     

  • 相关阅读:
    夜半随笔
    VC6.0 工程转到VS2008一些问题
    没有找到MSVCR90.dll,因此这个应用程序未能启动,重新安装应用程序可解决
    开源中国
    保存桌面图标的次序吧
    2008下,错误:fatal error C1853
    生成成功,调试时出现错误导致中断Unhandled exception at 0x41cd7fb0 in webcam.exe: 0xC0000005: Access violatio
    opencv安装可能没注意的细节
    error PRJ0003 : 生成“cl.exe”时出错
    wince对话框添加菜单
  • 原文地址:https://www.cnblogs.com/borter/p/9608772.html
Copyright © 2020-2023  润新知