ITableDefinition 中的数据类型映射

当使用 ITableDefinition::CreateTable 函数创建表时,SQL Server Native Client OLE DB 访问接口使用者可以在向其传递的 DBCOLUMNDESC 数组的 pwszTypeName 成员中指定 SQL Server 数据类型。如果使用者按照名称指定列的数据类型,则忽略由 DBCOLUMNDESC 结构的 wType 成员表示的 OLE DB 数据类型映射。

当使用 DBCOLUMNDESC 结构的 wType 成员指定具有 OLE DB 数据类型的新列数据类型时,SQL Server Native Client OLE DB 访问接口将按以下方式映射 OLE DB 数据类型。

OLE DB 数据类型

SQL Server

数据类型

其他信息

DBTYPE_BOOL

bit

DBTYPE_BYTES

binaryvarbinaryimagevarbinary(max)

SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMNDESC 结构的 ulColumnSize 成员。根据该值和 SQL Server 实例的版本,SQL Server Native Client OLE DB 访问接口将该类型映射为 image

如果 ulColumnSize 的值小于 binary 数据类型列的最大长度,则 SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMNDESC 的 rgPropertySets 成员。如果 DBPROP_COL_FIXEDLENGTH 为 VARIANT_TRUE,则 SQL Server Native Client OLE DB 访问接口将该类型映射为 binary。如果该属性值为 VARIANT_FALSE,则 SQL Server Native Client OLE DB 访问接口将该类型映射为 varbinary。在这两种情况下,DBCOLUMNDESC 的 ulColumnSize 成员将确定创建的 SQL Server 列的宽度。

DBTYPE_CY

money

DBTYPE_DBTIMESTAMP

datetime

DBTYPE_GUID

uniqueidentifier

DBTYPE_I2

smallint

DBTYPE_I4

int

DBTYPE_NUMERIC

numeric

SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMDESC 的 bPrecisionbScale 成员以确定 numeric 列的精度和小数位数。

DBTYPE_R4

real

DBTYPE_R8

float

DBTYPE_STR

charvarchartextvarchar(max)

SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMNDESC 结构的 ulColumnSize 成员。根据该值和 SQL Server 实例的版本,SQL Server Native Client OLE DB 访问接口将该类型映射为 text

如果 ulColumnSize 的值小于多字节字符数据类型列的最大长度,则 SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMNDESC rgPropertySets 成员。如果 DBPROP_COL_FIXEDLENGTH 为 VARIANT_TRUE,则 SQL Server Native Client OLE DB 访问接口将该类型映射为 char。如果该属性值为 VARIANT_FALSE,则 SQL Server Native Client OLE DB 访问接口将该类型映射为 varchar。在这两种情况下,DBCOLUMNDESC ulColumnSize 成员将确定创建的 SQL Server 列的宽度。

DBTYPE_UDT

UDT

需要 UDT 列时,ITableDefinition::CreateTable 将在 DBCOLUMNDESC 结构中用到以下信息:

  • 将忽略 pwSzTypeName。

  • rgPropertySets 必须包括一个 DBPROPSET_SQLSERVERCOLUMN 属性集,如 使用用户定义类型 中 DBPROPSET_SQLSERVERCOLUMN 一节所述。

DBTYPE_UI1

tinyint

DBTYPE_WSTR

ncharnvarcharntextnvarchar(max)

SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMNDESC 结构的 ulColumnSize 成员。根据该值,SQL Server Native Client OLE DB 访问接口将该类型映射为 ntext

如果 ulColumnSize 的值小于 Unicode 字符数据类型列的最大长度,则 SQL Server Native Client OLE DB 访问接口将检查 DBCOLUMNDESC 的 rgPropertySets 成员。如果 DBPROP_COL_FIXEDLENGTH 为 VARIANT_TRUE,则 SQL Server Native Client OLE DB 访问接口将该类型映射为 nchar。如果该属性值为 VARIANT_FALSE,则 SQL Server Native Client OLE DB 访问接口将该类型映射为 nvarchar。在这两种情况下,DBCOLUMNDESC ulColumnSize 成员将确定创建的 SQL Server 列的宽度。

DBTYPE_XML

XML

注意注意

创建新表时,SQL Server Native Client OLE DB 访问接口只映射前一个表中指定的 OLE DB 数据类型枚举值。尝试创建其中某一列为任何其他 OLE DB 数据类型的表时将生成错误。

请参阅

概念