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 |
binary、 varbinary、 image 或 varbinary(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 的 bPrecision 和 bScale 成员以确定 numeric 列的精度和小数位数。 |
DBTYPE_R4 |
real |
|
DBTYPE_R8 |
float |
|
DBTYPE_STR |
char、varchar、text 或 varchar(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 结构中用到以下信息:
|
DBTYPE_UI1 |
tinyint |
|
DBTYPE_WSTR |
nchar、nvarchar、ntext 或 nvarchar(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 数据类型的表时将生成错误。 |