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,當伺服器 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。
| 類型 | 描述 |
|---|---|
Fixed-length |
SQL Server binary 類型會直接對應到 JDBC BINARY 類型。這是當資料行具有 SET ANSI_PADDING ON 時,會由伺服器提供填補的固定長度類型。當伺服器 char 資料行未開啟填補時,JDBC 驅動程式會加入填補。 SQL Server timestamp 類型是固定長度為 8 個位元組的 JDBC BINARY 類型。 |
Variable-length |
SQL Server varbinary 類型會對應到 JDBC VARBINARY 類型。 |
Long |
SQL Server image 類型會對應到 JDBC LONGVARBINARY 類型。對於 SQL Server 2005 來講,這是已被取代的類型,因此您應該改用大數值類型。 SQL Server 2005 中的 udt 類型會將 JDBC 對應為 LONGBINARY 類型。 |
精確數值類型
JDBC 精確數值類型會直接對應到其相對應的 SQL Server 類型。
| 類型 | 描述 |
|---|---|
BIT |
JDBC BIT 類型代表可為 0 或 1 的單一位元。這會對應到 SQL Server bit 類型。 |
TINYINT |
DBC 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 類型,這兩個是特定的固定有效位數 decimal 類型,分別儲存為 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 驅動程式中並未實作 JDBC 自訂類型對應功能,此功能會將 SQLData 介面用於 JDBC 進階類型 (UDT、Struct 等)。