|
1. ResultSet中对于getDouble,getFloat,getInt方法由于返回的是基本类型数据,所以null变为了0(如果值为 SQL NULL ,则返回值为 0 )。这给我们带来了不少麻烦。为了避免这个问题需要借助ResultSet#wasNull()方法
2. ResultSet#getDate。这个家伙返回的类型是java.sql.Date,数据库字段类型为datetime时返回来的数据只有年月日,用ResultSet#getTimestamp才能返回完整的日期的和时间
3.注意数据库中的float类型,如果向数据库中插入记录时对于float类型字段需要使用double类型的参数,如果使用float类型的参数会导致精度问题。
SQL Server 类型 JDBC 类型 (java.sql.类型) Java 语言类型 bigint
BIGINT
long
timestamp
binary
BINARY
byte[]
bit
BIT
Boolean
charnchar
CHAR
String
decimal
money
smallmoney
DECIMAL
java.math.BigDecimal
float
DOUBLE
double
int
INTEGER
int
image
LONGVARBINARY
byte[]
text
ntext
LONGVARCHAR
String
numeric
NUMERIC
java.math.BigDecimal
real
REAL
float
smallint
tinyint
SMALLINT
short
datetime
smalldatetime
TIMESTAMP
java.sql.Timestamp
varbinary
VARBINARY
byte[]
varchar
nvarchar
uniqueidentifier
VARCHAR
String
注意: JDBC 驱动程序目前不支持 SQL Server sqlvariant 数据类型。如果使用查询从包含 sqlvariant 数据类型列的表中检索数据,则会发生异常。
了解数据类型的差异<!---->
<!--Content type: DocStudio. Transform: devdiv2mtps.xslt.-->
Java 编程语言数据类型和 SQL Server 2005 数据类型之间存在很多差异。Microsoft SQL Server 2005 JDBC Driver 通过各种类型的转换来帮助消除这些差异。
字符类型
JDBC 字符串数据类型为 CHAR、VARCHAR 和 LONGVARCHAR。
<!---->
类型 说明 Fixed-length
SQL Server char 和 nchar 数据类型直接映射到 JDBC CHAR 类型。这些都是在列具有 SET ANSI_PADDING ON 的情况下,具有由服务器提供的填充的固定长度的类型。对于 nchar,填充始终是打开的,但对于 char,在未填充服务器字符列的情况下,JDBC 驱动程序将添加填充。
Variable-length
SQL Server varchar 和 nvarchar 类型直接映射到 JDBC VARCHAR 类型。
Long
SQL Server text 和 ntext 类型映射到 JDBC LONGVARCHAR 类型。对于 SQL Server 2005 来说,这些类型已过时,因此应改用大值类型。
针对 text 和 ntext 服务器列使用 update<Numeric Type> 和 updateObject (int, java.lang.Object) 方法时将失败。然而,对于 text 和 ntext 服务器列,支持将 setObject 方法用于指定的字符转换类型。
二进制字符串类型
JDBC 二进制字符串类型为 BINARY、VARBINARY 和 LONGVARBINARY。
<!---->
类型 说明 固定长度
SQL Server binary 类型直接映射到 JDBC BINARY 类型。这是在列具有 SET ANSI_PADDING ON 的情况下,具有由服务器提供填充的固定长度类型。没有填充服务器 char 列时,JDBC 驱动程序会添加填充。
SQL Server timestamp 类型是具有 8 个字节的固定长度的 JDBC BINARY 类型。
可变长度
SQL Server varbinary 类型映射到 JDBC VARBINARY 类型。
Long
SQL Server image 类型映射到 JDBC LONGVARBINARY 类型。对于 SQL Server 2005 来说,该类型已过时,因此应改用大值类型。
SQL Server 2005 中的 udt 类型作为 LONGBINARY 类型映射到 JDBC。
精确数字类型
JDBC 精确数字类型直接映射到其对应的 SQL Server 类型。
<!---->
类型 说明 BIT
JDBC BIT 类型表示可能是 0 或 1 的单个位。此类型映射到 SQL Server bit 类型。
TINYINT
JDBC TINYINT 类型表示单个字节。此类型映射到 SQL Server tinyint 类型。
SMALLINT
JDBC SMALLINT 类型表示有符号的 16 位整数。此类型映射到 SQL Server smallint 类型。
INTEGER
JDBC INTEGER 类型表示有符号的 32 位整数。此类型映射到 SQL Server int 类型。
BIGINT
JDBC BIGINT 类型表示有符号的 64 位整数。此类型映射到 SQL Server bigint 类型。
NUMERIC
JDBC NUMERIC 类型表示固定精度的十进制值,它可存放相同精度的值。NUMERIC 类型映射到 SQL Server numeric 类型。
DECIMAL
JDBC DECIMAL 类型表示固定精度的十进制值,它可存放至少具有指定精度的值。DECIMAL 类型映射到 SQL Server decimal 类型。
JDBC DECIMAL 类型还映射到 SQL Server money 和 smallmoney 类型,这些类型是特定的固定精度的十进制类型,分别以 8 个字节和 4 个字节进行存储。
近似数字类型
JDBC 近似数值数据类型为 REAL、DOUBLE 和 FLOAT。
<!---->
类型 说明 REAL
JDBC REAL 类型具有 7 位精度(单精度)并直接映射到 SQL Server real 类型。
DOUBLE
JDBC DOUBLE 类型具有 15 位精度(双精度)并直接映射到 SQL Server float 类型。JDBC FLOAT 类型是 DOUBLE 的同义词。由于 FLOAT 与 DOUBLE 之间可能存在冲突,因此 DOUBLE 为首选类型。
日期时间类型
JDBC TIMESTAMP 类型映射到 SQL Server datetime 和 smalldatetime 类型。datetime 类型以两个 4 字节整数进行存储。smalldatetime 类型可存放相同的信息(日期和时间),但精度较低,为两个 2 字节的小整数。
注意: SQL Server timestamp 类型是固定长度的二进制字符串类型。它不映射到任何 JDBC 时间类型:DATE、TIME 或 TIMESTAMP。
自定义类型映射
JDBC 驱动程序中未实现将 SQLData 接口用于 JDBC 高级类型(UDT、Struct 等)的 JDBC 自定义类型映射功能。
另请参见
其他资源
了解 JDBC 驱动程序数据类型 |
|
|
|
|
|
|