JDBC数据类型

王朝学院·作者佚名  2016-05-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

JDBC数据类型JDBC数据类型JDBC驱动程序java数据类型转换到适当的JDBC类型然后再将它发送到数据库。它使用默认的大多数数据类型映射。例如,一个Java int转换成一个SQL INTEGER。创建默认映射驱动器之间提供一致性。下表总结了默认的JDBC数据类型的Java数据类型转换,当调用setXXX()方法的PReparedStatement或CallableStatement对象或ResultSet.updateXXX()方法。

SQLJDBC/JavasetXXXupdateXXXVARCHAR

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/JavasetXXXgetXXXVARCHAR

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航