Datentypzuordnung zu Rowsets und Parametern
In Rowsets und als Parameterwerte stellt der SQL Server Native Client OLE DB-Anbieter SQL Server-Daten dar, indem die folgenden definierten OLE DB-Datentypen, die in den Funktionen IColumnsInfo::GetColumnInfo und ICommandWithParameters::GetParameterInfo gemeldet werden, verwendet werden.
SQL Server-Datentyp |
OLE DB-Datentyp |
---|---|
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 |
Der SQL Server Native Client OLE DB-Anbieter unterstützt vom Consumer angeforderte Datenkonvertierungen, wie in der Abbildung gezeigt.
Die sql_variant-Ojekte können Daten jedes SQL Server-Datentyps enthalten mit Ausnahme von text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp sowie benutzerdefinierten CLR-Typen (Common Language Runtime) von Microsoft .NET Framework. Eine Instanz der sql_variant-Daten darf außerdem nicht sql_variant als zugrunde liegenden Basisdatentyp aufweisen. Die Spalte kann beispielsweise smallint-Werte in einigen Zeilen, float-Werte in anderen Zeilen und char/nchar-Werte in den übrigen Zeilen enthalten.
Hinweis |
---|
Der sql_variant-Datentyp ist in Microsoft-Visual-Basic® dem Variant-Datentyp und den Typen DBTYPE_VARIANT, DBTYPE_SQLVARIANT in OLEDB ähnlich. |
Wenn sql_variant-Daten als DBTYPE_VARIANT abgerufen werden, werden sie in einer VARIANT-Struktur im Puffer abgelegt. Die Untertypen in der VARIANT-Struktur dürfen nicht den im sql_variant-Datentyp definierten Untertypen zugeordnet werden. Die sql_variant-Daten müssen dann als DBTYPE_SQLVARIANT abgerufen werden, damit alle Untertypen zugeordnet werden.
DBTYPE_SQLVARIANT-Datentyp
Zur Unterstützung des sql_variant-Datentyps stellt der SQL Server Native Client OLE DB-Anbieter einen anbieterspezifischen Datentyp mit dem Namen DBTYPE_SQLVARIANT zur Verfügung. Wenn sql_variant-Daten als DBTYPE_SQLVARIANT abgerufen werden, werden sie in einer anbieterspezifischen SSVARIANT-Struktur gespeichert. Die SSVARIANT-Struktur enthält alle Untertypen, die zu den Untertypen des sql_variant-Datentyps passen.
Die Sitzungseigenschaft SSPROP_ALLOWNATIVEVARIANT muss außerdem auf TRUE festgelegt werden.
Anbieterspezifische Eigenschaft SSPROP_ALLOWNATIVEVARIANT
Beim Abrufen von Daten können Sie explizit angeben, welcher Datentyp für eine Spalte oder einen Parameter zurückgegeben werden soll. IColumnsInfo kann ebenfalls verwendet werden, um die Spalteninformationen abzurufen, und diese Informationen für die Bindung verwenden. Wenn mit IColumnsInfo Spalteninformationen für Bindungszwecke abgerufen werden und die SSPROP_ALLOWNATIVEVARIANT-Sitzungseigenschaft FALSE (Standardwert) lautet, wird für die sql_variant-Spalten DBTYPE_VARIANT zurückgegeben. Wenn die SSPROP_ALLOWNATIVEVARIANT-Eigenschaft FALSE ist, wird DBTYPE_SQLVARIANT nicht unterstützt. Wenn die SSPROP_ALLOWNATIVEVARIANT-Eigenschaft auf TRUE festgelegt ist, wird der Spaltentyp als DBTYPE_SQLVARIANT zurückgegeben. In diesem Fall enthält der Puffer die SSVARIANT-Struktur. Beim Abrufen von sql_variant-Daten als DBTYPE_SQLVARIANT, muss die SSPROP_ALLOWNATIVEVARIANT-Sitzungseigenschaft auf TRUE festgelegt sein.
Die SSPROP_ALLOWNATIVEVARIANT-Eigenschaft ist ein Teil des anbieterspezifischen DBPROPSET_SQLSERVERSESSION-Eigenschaftssatzes und eine Sitzungseigenschaft.
DBTYPE_VARIANT gilt für alle anderen OLE DB-Anbieter.
SSPROP_ALLOWNATIVEVARIANT
SSPROP_ALLOWNATIVEVARIANT ist eine Sitzungseigenschaft und ein Teil des DBPROPSET_SQLSERVERSESSION-Eigenschaftssatzes.
SSPROP_ALLOWNATIVEVARIANT |
Typ: VT_BOOL R/W: Lesen/Schreiben Standard: VARIANT_FALSE Beschreibung: Bestimmt, ob die Daten als DBTYPE_VARIANT oder DBTYPE_SQLVARIANT abgerufen werden. VARIANT_TRUE: Der Spaltentyp wird als DBTYPE_SQLVARIANT zurückgegeben. In diesem Fall enthält der Puffer die SSVARIANT-Struktur. VARIANT_FALSE: Der Spaltentyp wird als DBTYPE_VARIANT zurückgegeben und der Puffer enthält die VARIANT-Struktur. |