Partager via


Mappage de type de données dans les ensembles de lignes et les paramètres

Dans les ensembles de lignes et en tant que valeurs de paramètre, le fournisseur OLE DB SQL Server Native Client représente les données SQL Server à l'aide des types de données OLE DB définis suivants, signalés dans les fonctions IColumnsInfo::GetColumnInfo et ICommandWithParameters::GetParameterInfo.

Type de données SQL Server

Type de données OLE DB

bigint

DBTYPE_I8

binary

DBTYPE_BYTES

bit

DBTYPE_BOOL

char

DBTYPE_STR

datetime

DBTYPE_DBTIMESTAMP

decimal

DBTYPE_NUMERIC

float

DBTYPE_R8

image

DBTYPE_BYTES

int

DBTYPE_I4

money

DBTYPE_CY

nchar

DBTYPE_WSTR

ntext

DBTYPE_WSTR

numeric

DBTYPE_NUMERIC

nvarchar

DBTYPE_WSTR

real

DBTYPE_R4

smalldatetime

DBTYPE_DBTIMESTAMP

smallint

DBTYPE_I2

smallmoney

DBTYPE_CY

sql_variant

DBTYPE_VARIANT, DBTYPE_SQLVARIANT

sysname

DBTYPE_WSTR

text

DBTYPE_STR

timestamp

DBTYPE_BYTES

tinyint

DBTYPE_UI1

UDT

DBTYPE_UDT

uniqueidentifier

DBTYPE_GUID

varbinary

DBTYPE_BYTES

varchar

DBTYPE_STR

XML

DBTYPE_XML

Le fournisseur OLE DB SQL Server Native Client prend en charge des conversions de données demandées par le consommateur, comme indiqué dans l'illustration.

Les objets sql_variant peuvent contenir des données de n'importe quel type de données SQL Server, sauf text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp et les types CLR (Common Language Runtime) Microsoft .NET Framework définis par l'utilisateur. sql_variant ne peut pas être le type de données de base sous-jacent d'une instance de données sql_variant. Par exemple, la colonne peut contenir des valeurs smallint pour quelques lignes, des valeurs float pour d'autres lignes et des valeurs char/nchar dans le reste.

[!REMARQUE]

Le type de données sql_variant est semblable au type de données Variant dans Microsoft Visual Basic® et à DBTYPE_VARIANT, DBTYPE_SQLVARIANT dans OLEDB.

Lorsque des données sql_variant sont extraites en tant que DBTYPE_VARIANT, elles sont placées dans une structure VARIANT dans la mémoire tampon. Mais les sous-types dans la structure VARIANT peuvent ne pas être mappés aux sous-types définis dans le type de données sql_variant. Les données sql_variant doivent ensuite être extraites en tant que DBTYPE_SQLVARIANT pour que tous les sous-types correspondent.

Type de données DBTYPE_SQLVARIANT

Pour prendre en charge le type de données sql_variant, le fournisseur OLE DB SQL Server Native Client expose un type de données spécifique au fournisseur appelé DBTYPE_SQLVARIANT. Lorsque des données sql_variant sont extraites en tant que DBTYPE_SQLVARIANT, elles sont stockées dans une structure SSVARIANT spécifique au fournisseur. La structure SSVARIANT contient tous les sous-types qui correspondent aux sous-types du type de données sql_variant.

La propriété de session SSPROP_ALLOWNATIVEVARIANT doit également avoir la valeur TRUE.

Propriété SSPROP_ALLOWNATIVEVARIANT spécifique au fournisseur

Pour extraire des données, vous pouvez spécifier explicitement le type de données à retourner pour une colonne ou un paramètre. IColumnsInfo permet également d'obtenir les informations sur les colonnes et d'utiliser ces informations pour effectuer la liaison. Lorsque IColumnsInfo est utilisé pour obtenir des informations sur les colonnes en vue d'effectuer la liaison, si la propriété de session SSPROP_ALLOWNATIVEVARIANT a la valeur FALSE (valeur par défaut), DBTYPE_VARIANT est retourné pour les colonnes sql_variant. Si la propriété SSPROP_ALLOWNATIVEVARIANT a la valeur FALSE, DBTYPE_SQLVARIANT n'est pas pris en charge. Si la propriété SSPROP_ALLOWNATIVEVARIANT a la valeur TRUE, le type de colonne est retourné en tant que DBTYPE_SQLVARIANT, auquel cas la mémoire tampon contiendra la structure SSVARIANT. Pour extraire des données sql_variant en tant que DBTYPE_SQLVARIANT, la propriété de session SSPROP_ALLOWNATIVEVARIANT doit avoir la valeur TRUE.

La propriété SSPROP_ALLOWNATIVEVARIANT est une propriété de session et fait partie du jeu de propriétés DBPROPSET_SQLSERVERSESSION spécifique au fournisseur.

DBTYPE_VARIANT s'applique à tous les autres fournisseurs OLE DB.

SSPROP_ALLOWNATIVEVARIANT

SSPROP_ALLOWNATIVEVARIANT est une propriété de session et fait partie du jeu de propriétés DBPROPSET_SQLSERVERSESSION.

SSPROP_ALLOWNATIVEVARIANT

Type : VT_BOOL

L/E (Lecture/Écriture) : lecture/écriture

Valeur par défaut : VARIANT_FALSE

Description : détermine si les données sont extraites en tant que DBTYPE_VARIANT ou DBTYPE_SQLVARIANT.

VARIANT_TRUE : le type de colonne est retourné en tant que DBTYPE_SQLVARIANT, auquel cas la mémoire tampon contient la structure SSVARIANT.

VARIANT_FALSE : le type de colonne est retourné en tant que DBTYPE_VARIANT et la mémoire tampon a la structure VARIANT.

Voir aussi

Concepts