JDBC SQL Server 参数类型

    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 字符串数据类型为 CHARVARCHARLONGVARCHAR

<!---->
类型 说明

Fixed-length

SQL Server charnchar 数据类型直接映射到 JDBC CHAR 类型。这些都是在列具有 SET ANSI_PADDING ON 的情况下,具有由服务器提供的填充的固定长度的类型。对于 nchar,填充始终是打开的,但对于 char,在未填充服务器字符列的情况下,JDBC 驱动程序将添加填充。

Variable-length

SQL Server varcharnvarchar 类型直接映射到 JDBC VARCHAR 类型。

Long

SQL Server textntext 类型映射到 JDBC LONGVARCHAR 类型。对于 SQL Server 2005 来说,这些类型已过时,因此应改用大值类型。

针对 textntext 服务器列使用 update<Numeric Type>updateObject (int, java.lang.Object) 方法时将失败。然而,对于 textntext 服务器列,支持将 setObject 方法用于指定的字符转换类型。

二进制字符串类型

JDBC 二进制字符串类型为 BINARYVARBINARYLONGVARBINARY

<!---->
类型 说明

固定长度

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 moneysmallmoney 类型,这些类型是特定的固定精度的十进制类型,分别以 8 个字节和 4 个字节进行存储。

近似数字类型

JDBC 近似数值数据类型为 REALDOUBLEFLOAT

<!---->
类型 说明

REAL

JDBC REAL 类型具有 7 位精度(单精度)并直接映射到 SQL Server real 类型。

DOUBLE

JDBC DOUBLE 类型具有 15 位精度(双精度)并直接映射到 SQL Server float 类型。JDBC FLOAT 类型是 DOUBLE 的同义词。由于 FLOATDOUBLE 之间可能存在冲突,因此 DOUBLE 为首选类型。

日期时间类型

JDBC TIMESTAMP 类型映射到 SQL Server datetimesmalldatetime 类型。datetime 类型以两个 4 字节整数进行存储。smalldatetime 类型可存放相同的信息(日期和时间),但精度较低,为两个 2 字节的小整数。

Note 注意:

SQL Server timestamp 类型是固定长度的二进制字符串类型。它不映射到任何 JDBC 时间类型:DATETIMETIMESTAMP

自定义类型映射

JDBC 驱动程序中未实现将 SQLData 接口用于 JDBC 高级类型(UDT、Struct 等)的 JDBC 自定义类型映射功能。

另请参见

你可能感兴趣的:(sql,sql,编程,server,jdbc,Microsoft)