DB2 的数据提供程序

平台兼容性

代码页转换

数据提供程序支持单字节字符集(SBCS)、混合字节字符集(MBCS)双字节字符集(DBCS)和 Unicode - UTF8 [1208]的组合,这是一种 8 位 Unicode 转换格式。

主机 CCSID

数据提供程序需要主机 CCSID(编码字符集标识符)的值,用于对字符串数据执行代码页转换。 默认主机 CCSID 值为 EBCDIC – 美国/加拿大 [37]。 通常,适用于 z/OS 和 IBM i 的 IBM DB2 数据库服务器使用 EBCDIC(扩展的二进制编码十进制交换代码)。

电脑代码页

数据提供程序需要 PC 代码页的值,用于对字符串数据执行代码页转换。 默认电脑代码页为 ANSI – 拉丁文 I [1252]。 通常,数据使用者使用 ANSI(美国国家标准研究所)或 Unicode。

将二进制文件处理为字符

DB2 的数据提供程序根据 DB2 数据类型和 Windows 使用者数据类型自动转换为二进制数据(CCSID 65535)和字符串数据类型。 DB2 编码由主机 CCSID 确定。 Windows 编码由电脑代码页确定。

数据类型映射

本主题介绍所有数据类型映射到 OLE DB 数据类型。

DB2 到 ADO.NET 数据类型映射

下表介绍了 DB2 数据类型映射到 db2 (MsDb2Client) 数据类型(MsDb2Type)ADO.NET 提供程序。

MsDb2Type DB2 数据类型 说明
BigInt Bigint 大整数是一个 8 字节二进制整数。
Binary Binary 二进制文件是固定长度的二进制字符串。
Bit Smallint 小整数是一个双字节二进制整数。
BLOB BLOB 二进制大型对象是用于存储非文本或二进制数据的可变长度字符串。
Char Char 字符是固定长度的 SBCS 或 MBCS 字符串。
CLOB CLOB 不同长度的字符大型对象是一个不同长度的字符串。 字符串的最大长度取决于 DB2 平台和版本。
日期 日期 日期是一个 10 字节字符串。
DBCLOB DCLOB 不同长度的双字节字符大型对象是唯一长度的图形双字节字符串。 字符串的最大长度取决于 DB2 平台和版本。
十进制 十进制 小数是打包的十进制数。
Double Double 双精度为 8 字节双精度浮点数。
图形 图形 图形是仅限固定长度的 DBCS 字符串。
int (整数) 整数 整数是一个 4 字节二进制整数。
数值 数值 数字是打包的十进制数。
雷亚尔 雷亚尔 实数是 4 字节单精度浮点数。
SmallInt Smallint 小整数是一个双字节二进制整数。
时间 时间 时间是一个 8 字节的时间字符串。
时间戳 时间戳 时间戳是表示日期、时间和微秒的 26 字节字符串。
TinyInt Smallint 小整数是一个双字节二进制整数。
VarBinary Varbinary 不同的二进制文件是可变长度的二进制字符串。
VarChar Varchar 不同的字符是不同长度的 SBCS 或 MBCS 字符串。
VarGraphic Vargraphic 不同图形是仅可变长度的 DBCS 字符串。
VarWideChar Vargraphic 不同的图形是长度不一的 Unicode 字符串。
VarWideGraphic Vargraphic 不同的图形是长度不一的 Unicode 字符串。
WideChar 图形 图形是固定长度的 Unicode 字符串。
Xml XML 格式正确的 XML 文档字符串。

DB2 到 OLE DB 数据类型映射

下表介绍了 DB2 数据类型映射到 OLE DB 数据类型。

OLE DB 数据类型 DB2 数据类型 说明
DBTYPE_I8 Bigint 大整数是一个 8 字节二进制整数。
DBTYPE_Bytes BINARY 二进制文件是固定长度的二进制字符串
DBTYPE_Bytes BLOB 二进制大型对象是用于存储非文本或二进制数据的可变长度字符串。
数据库类型_字符串 Char 字符是固定长度的 SBCS 或 MBCS 字符串。
DBTYPE_WSTR Char Unicode 字符是固定长度的 MBCS 字符串。
数据库类型_字符串 CLOB 不同长度的字符大型对象是一个不同长度的字符串。 字符串的最大长度取决于 DB2 平台和版本。
DBTYPE_DBDate 日期 日期是一个 10 字节字符串。
DBTYPE_Decimal 十进制 小数是打包的十进制数。
DBTYPE_R8 Double 双精度为 8 字节双精度浮点数。
DBTYPE_R8 漂浮 浮点数是一个 8 字节双精度浮点数。
DBTYPE_WSTR 图形 图形是仅限固定长度的 DBCS 字符串。
DBTYPE_I4 整数 整数是一个 4 字节二进制整数。
数据库类型_字符串 Long Varchar 不同的字符是不同长度的 SBCS 或 MBCS 字符串。
DBTYPE_WSTR Long Varchar 不同长度的 Unicode 字符串。
DBTYPE_WSTR 长 Vargraphic 不同图形是仅可变长度的 DBCS 字符串。
DBTYPE_Numeric 数值 数字是打包的十进制数。
DBTYPE_I2 Smallint 小整数是一个双字节二进制整数。
DBTYPE_R4 雷亚尔 实数是 4 字节单精度浮点数。
DBTYPE_DBTime 时间 时间是一个 8 字节的时间字符串。
DBTYPE_DBTimestamp 时间戳 时间戳是表示日期、时间和微秒的 26 字节字符串。
DBTYPE_Bytes Varbinary 不同的二进制文件是可变长度的二进制字符串。
数据库类型_字符串 Varchar 不同的字符是不同长度的 SBCS 或 MBCS 字符串。
DBTYPE_WSTR Varchar 不同长度的 Unicode 字符串。
DBTYPE_WSTR VarGraphic 不同图形是仅可变长度的 DBCS 字符串。

使用 IDBSchemaRowset::GetRowset 的预定义架构行集检索 OLE DB 中的架构信息。 数据访问接口公开了PROVIDER_TYPES行集,以根据 IBM DB2 平台和版本指示 DB2 到 OLE DB 数据类型支持(类型、映射、限制)。

DB2 for z/OS

数据提供程序支持在连接到 DB2 for z/OS 时访问这些数据类型。

DB2 Type_name OLE DB data_type Column_size Minimum_scale Maximum_scale
Smallint DBType_12 5
整数 DBType_14 10
Bigint DBType_18 19
Binary DBType_Bytes 255
雷亚尔 DBType_R4 21
漂浮 DBType_R8 53
Double DBType_R8 53
十进制 DBType_Decimal 31 0 31
图形 DBType_WSTR 127
VarGraphic DBType_WSTR 16352
Char DBType_STR 255
Varchar DBType_STR 32,672
Char DBType_WSTR 255
Varchar DBType_WSTR 32,672
数值 DBType_Numeric 31 0 31
日期 DBType_DBDate 10
时间 DBType_DBTime 8
时间戳 DBType_Timestamp 26
BLOB DBType_Bytes 2147483647
CLOB DBType_STR 2147483647
Long Varchar DBType_STR 32,704
Long Varchar DBType_WSTR 32,704
长 Vargraphic DBType_WSTR 16352
Varbinary DBTypte_Bytes 32,704

DB2 for IBM i

数据提供程序支持在连接到 DB2 for IBM i 时访问这些数据类型。

DB2 Type_name OLE DB data_type Column_size Minimum_scale Maximum_scale
Binary DBType_Bytes 32765
Smallint DBType_12 5
整数 DBType_14 10
Bigint DBType_18 19
雷亚尔 DBType_R4 24
漂浮 DBType_R8 53
Double DBType_R8 53
十进制 DBType_Decimal 63 0 31
图形 DBType_WSTR 16382
VarGraphic DBType_WSTR 16369
Char DBType_STR 32765
Varchar DBType_STR 32739
Char DBType_WSTR 32765
Varchar DBType_WSTR 32739
数值 DBType_Numeric 31 0 31
日期 DBType_DBDate 10
时间 DBType_DBTime 8
时间戳 DBType_Timestamp 26
BLOB DBType_Bytes 2147483647
CLOB DBType_STR 2147483647
Varbinary DBType_Bytes 32739

DB2 for LUW

数据提供程序支持在连接到 DB2 for LUW 时访问这些数据类型。

DB2 Type_name OLE DB data_type Column_size Minimum_scale Maximum_scale
Binary DBType_Bytes 254
Smallint DBType_12 5
整数 DBType_14 10
Bigint DBType_18 19
雷亚尔 DBType_R4 24
漂浮 DBType_R8 53
Double DBType_R8 53
十进制 DBType_Decimal 31 0 31
图形 DBType_WSTR 127
VarGraphic DBType_WSTR 16336
Char DBType_STR 254
Varchar DBType_STR 4000
Char DBType_WSTR 254
Varchar DBType_WSTR 4000
CHAR() 用于 BIT 数据 DBType_Bytes 254
Varchar() 用于 BIT 数据 DBType_Bytes 32,672
数值 DBType_Numeric 31 0 31
日期 DBType_DBDate 10
时间 DBType_DBTime 8
时间戳 DBType_Timestamp 26
BLOB DBType_Bytes 2147483647
CLOB DBType_STR 2147483647
Long Varchar DBType_STR 32700
Long Varchar DBType_STR 32700
Long Varchar DBType_WSTR 16350
Varbinary DBTYPE_BYTES 32762

SQL Server Integration Services

使用 SQL Server Integration Services 导入和导出向导从 Microsoft SQL Server Management Studio 时,可以通过编辑 XML 映射文件来自定义默认数据转换。 XML 文件位于 C:\Program Files\Microsoft SQL Server\130\DTSMappingFiles (适用于 64 位)和 C:\Program Files (x86)\Microsoft SQL Server\130\DTSMappingFiles (对于 32 位)。

SQL Server 复制服务

SQL Server 复制可能会根据从 SQL Server 到 DB2 数据类型的默认映射错误地转换数据。 建议管理员和开发人员使用以下 SQL Server 系统存储过程查看和修改复制数据类型映射。