Mappage de type de données dans ITableDefinition
Lors de la création de tables à l'aide de la fonction ITableDefinition::CreateTable , le consommateur de fournisseur OLE DB SQL Server Native Client peut spécifier des types de données SQL Server dans le membre pwszTypeName du tableau DBCOLUMNDESC passé. Si le consommateur spécifie le type de données d'une colonne par nom, le mappage de type de données OLE DB, représenté par le membre wType de la structure DBCOLUMNDESC, est ignoré.
Lors de la spécification de nouveaux types de données de colonne avec des types de données OLE DB à l'aide du membre de structure wType DBCOLUMNDESC, le fournisseur OLE DB SQL Server Native Client mappe les types de données OLE DB comme suit.
Type de données OLE DB |
Type de données SQL Server |
Autres informations |
---|---|---|
DBTYPE_BOOL |
bit |
|
DBTYPE_BYTES |
binary, varbinary, image ou varbinary(max) |
Le fournisseur OLE DB SQL Server Native Client inspecte le membre ulColumnSize de la structure DBCOLUMNDESC. Selon la valeur et la version de l'instance SQL Server, le fournisseur OLE DB SQL Server Native Client mappe le type à image. Si la valeur de ulColumnSize est inférieure à la longueur maximale d'une colonne de type de données binary, le fournisseur OLE DB Native Client SQL Server inspecte le membre rgPropertySets DBCOLUMNDESC. Si DBPROP_COL_FIXEDLENGTH est VARIANT_TRUE, le fournisseur OLE DB SQL Server Native Client mappe le type à binary. Si la valeur de la propriété est VARIANT_FALSE, le fournisseur OLE DB SQL Server Native Client mappe le type à varbinary. Dans les deux cas, le membre ulColumnSize DBCOLUMNDESC détermine la largeur de la colonne SQL Server créée. |
DBTYPE_CY |
money |
|
DBTYPE_DBTIMESTAMP |
datetime |
|
DBTYPE_GUID |
uniqueidentifier |
|
DBTYPE_I2 |
smallint |
|
DBTYPE_I4 |
int |
|
DBTYPE_NUMERIC |
numeric |
Le fournisseur OLE DB SQL Server Native Client inspecte les membres bPrecision et bScale DBCOLUMDESC pour déterminer la précision et l'échelle pour la colonne numeric. |
DBTYPE_R4 |
real |
|
DBTYPE_R8 |
float |
|
DBTYPE_STR |
char, varchar, text ou varchar(max) |
Le fournisseur OLE DB SQL Server Native Client inspecte le membre ulColumnSize de la structure DBCOLUMNDESC. Selon la valeur et la version de l'instance SQL Server, le fournisseur OLE DB SQL Server Native Client mappe le type à text. Si la valeur de ulColumnSize est inférieure à la longueur maximale d'une colonne de type de données caractères multioctets, le fournisseur OLE DB Native Client SQL Server inspecte le membre rgPropertySets DBCOLUMNDESC. Si DBPROP_COL_FIXEDLENGTH est VARIANT_TRUE, le fournisseur OLE DB SQL Server Native Client mappe le type à char. Si la valeur de la propriété est VARIANT_FALSE, le fournisseur OLE DB SQL Server Native Client mappe le type à varchar. Dans les deux cas, le membre ulColumnSize DBCOLUMNDESC détermine la largeur de la colonne SQL Server créée. |
DBTYPE_UDT |
UDT |
Les informations suivantes sont utilisées dans les structures DBCOLUMNDESC par ITableDefinition::CreateTable lorsque les colonnes UDT sont requises :
|
DBTYPE_UI1 |
tinyint |
|
DBTYPE_WSTR |
nchar, nvarchar, ntext ou nvarchar(max) |
Le fournisseur OLE DB SQL Server Native Client inspecte le membre ulColumnSize de la structure DBCOLUMNDESC. Selon la valeur, le fournisseur OLE DB SQL Server Native Client mappe le type à ntext. Si la valeur de ulColumnSize est inférieure à la longueur maximale d'une colonne de type de données caractères Unicode, le fournisseur OLE DB Native Client SQL Server inspecte le membre rgPropertySets DBCOLUMNDESC. Si DBPROP_COL_FIXEDLENGTH est VARIANT_TRUE, le fournisseur OLE DB SQL Server Native Client mappe le type à nchar. Si la valeur de la propriété est VARIANT_FALSE, le fournisseur OLE DB SQL Server Native Client mappe le type à nvarchar. Dans les deux cas, le membre ulColumnSize DBCOLUMNDESC détermine la largeur de la colonne SQL Server créée. |
DBTYPE_XML |
XML |
[!REMARQUE]
Lors de la création d'une table, le fournisseur OLE DB SQL Server Native Client mappe uniquement les valeurs d'énumération de type de données OLE DB spécifiées dans le tableau précédent. Toute tentative de création d'une table avec une colonne de tout autre type de données OLE DB génère une erreur.