IDBSchemaRowsetImpl-Klasse

Bietet die Implementierung für Schemarowsets.

Syntax

template <class SessionClass>
class ATL_NO_VTABLE IDBSchemaRowsetImpl : public IDBSchemaRowset

Parameter

SessionClass
Die Klasse, mit der IDBSchemaRowsetImpl geerbt wird. Diese Klasse ist in der Regel die Sitzungsklasse des Benutzers.

Anforderungen

Header: „atldb.h“

Member

Methoden

Name Beschreibung
CheckRestrictions Überprüft die Gültigkeit von Einschränkungen für ein Schemarowset.
CreateSchemaRowset Implementiert eine COM-Objekterstellerfunktion für das mit dem Vorlagenparameter angegebene Objekt.
SetRestrictions Gibt an, welche Einschränkungen Sie für ein bestimmtes Schemarowset unterstützen.

Schnittstellenmethoden

Name Beschreibung
GetRowset Gibt ein Schemarowset zurück.
GetSchemas Gibt eine Liste der Schemarowsets zurück, auf die IDBSchemaRowsetImpl::GetRowsetzugreifen kann.

Hinweise

Diese Klasse implementiert die IDBSchemaRowset -Schnittstelle und die vorlagenbasierte Erstellerfunktion CreateSchemaRowset.

OLE DB verwendet die Schemarowsets, um Daten zu den Daten in einem Anbieter zurückzugeben. Solche Daten werden häufig als "Metadaten" bezeichnet. Standardmäßig muss ein Anbieter immer , und , wie in IDBSchemaRowset in der OLE DB-Programmierreferenz beschrieben.DBSCHEMA_PROVIDER_TYPESDBSCHEMA_COLUMNSDBSCHEMA_TABLES Schemarowsets werden in einer Schemazuordnung festgelegt. Informationen zu den Schemazuordnungseinträgen finden Sie unter SCHEMA_ENTRY.

Der OLE DB-Anbieterassistent im ATL-Objektassistenten generiert automatisch Code für die Schemarowsets in Ihrem Projekt. (Standardmäßig unterstützt der Assistent die zuvor erwähnten obligatorischen Schema-Rowsets.) Wenn Sie einen Consumer mithilfe des ATL-Objekt-Assistenten erstellen, verwendet der Assistent Schema-Rowsets, um die richtigen Daten an einen Anbieter zu binden. Wenn Sie die Schemarowsets nicht implementieren, um die richtigen Metadaten bereitzustellen, bindet der Assistent nicht die richtigen Daten.

Informationen über die Unterstützung für Schemarowsets in Ihrem Anbieter finden Sie unter Supporting Schema Rowsets(Unterstützen von Schemarowsets).

Weitere Informationen zu Schemarowsets finden Sie unter Schema Rowsets (Schemarowsets) in der OLE DB-Programmiererreferenz.

IDBSchemaRowsetImpl::CheckRestrictions

Überprüft die Gültigkeit von Einschränkungen für ein Schemarowset.

Syntax

HRESULT CheckRestrictions(REFGUID rguidSchema,
   ULONG cRestrictions,  const VARIANT rgRestrictions[]);

Parameter

rguidSchema
[in] Ein Verweis auf die angeforderte Schemarowset-GUID (z. B. DBSCHEMA_TABLES).

cRestrictions
[in] Die Anzahl der Einschränkungen, die der Consumer für das Schemarowset übergeben hat.

rgRestrictions
[in] Ein Längenarray von cRestrictions von festzulegenden Einschränkungswerten. Weitere Informationen finden Sie in der Beschreibung des Parameters "rgRestrictions" in SetRestrictions.

Hinweise

Verwenden Sie CheckRestrictions , um die Gültigkeit von Einschränkungen für ein Schemarowset zu überprüfen. Sie überprüft Einschränkungen für DBSCHEMA_TABLESDBSCHEMA_COLUMNSRowsets und DBSCHEMA_PROVIDER_TYPES Schemazeilen. Rufen Sie sie auf, um festzustellen, ob der Anruf IDBSchemaRowset::GetRowset eines Verbrauchers korrekt ist. Wenn Sie andere als die oben aufgeführten Schemarowsets unterstützen möchten, sollten Sie Ihre eigene Funktion zum Ausführen dieser Aufgabe erstellen.

CheckRestrictions bestimmt, ob der Consumer GetRowset mit der richtigen Einschränkung und dem richtigen Einschränkungstyp aufruft (z. B. eine VT_BSTR für eine Zeichenfolge), die der Anbieter unterstützt. Es bestimmt außerdem, ob die richtige Anzahl von Einschränkungen unterstützt werden. Standardmäßig fragt CheckRestrictions den Anbieter mittels des Aufrufs von SetRestrictions , welche Einschränkungen für ein angegebenes Rowset unterstützt werden. Es vergleicht dann die Einschränkungen vom Consumer mit den vom Anbieter unterstützten, wobei der Vergleich entweder erfolgreich ist oder fehlschlägt.

Weitere Informationen zu Schema-Rowsets finden Sie unter IDBSchemaRowset in der OLE DB Programmer's Reference im Windows SDK.

IDBSchemaRowsetImpl::CreateSchemaRowset

Implementiert eine COM-Objekterstellerfunktion für das mit dem Vorlagenparameter angegebene Objekt.

Syntax

template template <class SchemaRowsetClass>
HRESULT CreateSchemaRowset(IUnknown *pUnkOuter,
   ULONG cRestrictions,
   const VARIANT rgRestrictions[],
   REFIID riid,
   ULONG cPropertySets,
   DBPROPSET rgPropertySets[],
   IUnknown** ppRowset,
   SchemaRowsetClass*& pSchemaRowset);

Parameter

pUnkOuter
[in] Ein äußerer IUnknown beim Aggregieren, andernfalls NULL.

cRestrictions
[in] Die Anzahl der Einschränkungen für das Schemarowset.

rgRestrictions
[in] Ein Array auf das Rowset anzuwendender cRestrictionsVARIANTen.

riid
[in] Die Schnittstelle zu QueryInterface für die Ausgabe IUnknown.

cPropertySets
[in] Die Anzahl der festzulegenden Eigenschaftensätze.

rgPropertySets
[in] Ein Array von DBPROPSET -Strukturen, die die festzulegenden Eigenschaften angeben.

ppRowset
[out] Die von riid angeforderte ausgehende IUnknown Anforderung. Dies IUnknown ist eine Schnittstelle für das Schema rowset-Objekt.

pSchemaRowset
[out] Ein Zeiger auf eine Instanz der Schemarowsetklasse. Dieser Parameter wird in der Regel nicht verwendet, kann jedoch verwendet werden, wenn Sie mehr Arbeit in das Schemarowset investieren müssen, bevor Sie es einem COM-Objekt übergeben. Die Lebensdauer von pSchemaRowset ist durch ppRowset gebunden.

Rückgabewert

Ein HRESULT-Standardwert.

Hinweise

Diese Funktion implementiert einen generischen Ersteller für alle Typen von Schemarowsets. In der Regel ruft der Benutzer diese Funktion nicht auf. Sie wird durch die Implementierung der Schemazuordnung aufgerufen.

IDBSchemaRowsetImpl::SetRestrictions

Gibt an, welche Einschränkungen Sie für ein bestimmtes Schemarowset unterstützen.

Syntax

void SetRestrictions(ULONG cRestrictions,
   GUID* /* rguidSchema */,
   ULONG* rgRestrictions);

Parameter

cRestrictions
[in] Die Anzahl der Einschränkungen im rgRestrictions-Array und die Anzahl der GUIDs im rguidSchema-Array .

rguidSchema
[in] Ein Array von GUIDs der Schemarowsets, für die Einschränkungen abgerufen werden sollen. Jedes Arrayelement enthält die GUID eines Schemarowsets (z. B. DBSCHEMA_TABLES).

rgRestrictions
[in] Ein Längenarray von cRestrictions von festzulegenden Einschränkungswerten. Jedes Element entspricht den Einschränkungen für das Schemarowset, das mit der GUID identifiziert wird. Wenn ein Schemarowset nicht vom Anbieter unterstützt wird, wird das Element auf 0 (null) festgelegt. Andernfalls enthält der ULONG -Wert eine Bitmaske, die die Einschränkungen darstellt, die für dieses Schemarowset unterstützt werden. Weitere Informationen dazu, welche Einschränkungen einem bestimmten Schema-Rowset entsprechen, finden Sie in der Tabelle der Schema-Rowset-GUIDs in IDBSchemaRowset in der OLE DB-Programmierreferenz im Windows SDK.

Hinweise

Das IDBSchemaRowset Objekt ruft SetRestrictions auf, um zu bestimmen, welche Einschränkungen Sie für ein bestimmtes Schema-Rowset unterstützen (es wird von GetSchemas über einen hochcasteten Zeiger aufgerufen). Einschränkungen ermöglichen es Consumern, nur die übereinstimmende Zeilen abzurufen (z. B. Suche nach allen Spalten in der Tabelle „MyTable“). Einschränkungen sind optional, und wenn keine unterstützt werden (Standardeinstellung), werden immer alle Daten zurückgegeben.

Die Standardimplementierung dieser Methode legt die rgRestrictions-Arrayelemente auf 0 fest. Überschreiben Sie die Standardeinstellung in Ihrer Sitzungsklasse, um Einschränkungen festzulegen, die vom Standard abweichen.

Informationen zum Implementieren der Schemarowset-Unterstützung finden Sie unter Unterstützen von Schemarowsets.

Ein Beispiel für einen Anbieter, der Schemarowsets unterstützt, finden Sie unter dem Beispiel UpdatePV .

Weitere Informationen zu Schema-Rowsets finden Sie unter IDBSchemaRowset in der OLE DB Programmer's Reference im Windows SDK.

IDBSchemaRowsetImpl::GetRowset

Gibt ein Schemarowset zurück.

Syntax

STDMETHOD (GetRowset)(IUnknown *pUnkOuter,
   REFGUID rguidSchema,
   ULONG cRestrictions,
   const VARIANT rgRestrictions[],
   REFIID riid,
   ULONG cPropertySets,
   DBPROPSET rgPropertySets[],
   IUnknown **ppRowset);

Parameter

pUnkOuter
[in] Ein äußeres IUnknown Element beim Aggregieren; andernfalls NULL.

rguidSchema
[in] Ein Verweis auf die angeforderte Schemarowset-GUID (z. B. DBSCHEMA_TABLES).

cRestrictions
[in] Die Anzahl der Einschränkungen, die auf das Schemarowset angewendet werden sollen.

rgRestrictions
[in] Ein Array von cRestrictionsVARIANTs, die die Einschränkungen darstellen.

riid
[in] Die anzufordernde IID des neu erstellten Schemarowsets.

cPropertySets
[in] Die Anzahl der festzulegenden Eigenschaftensätze.

rgPropertySets
[in/out] Ein Array von DBPROPSET -Strukturen, die für das neu erstellte Schemarowset festgelegt werden sollen.

ppRowset
[out] Ein Zeiger auf die angeforderte Schnittstelle für das neu erstellte Schemarowset.

Hinweise

Für diese Methode muss der Benutzer eine Schemazuordnung in der Sitzungsklasse haben. Mithilfe der Schemazuordnungsinformationen wird ein angegebenes Rowset-Objekt erstellt, GetRowset wenn der rguidSchema-Parameter einer der GUIDs der Zuordnungseinträge entspricht. Unter SCHEMA_ENTRY finden Sie eine Beschreibung des Zuordnungseintrags.

Siehe IDBSchemaRowset::GetRowset im Windows SDK.

IDBSchemaRowsetImpl::GetSchemas

Gibt eine Liste der Schemarowsets zurück, auf die IDBSchemaRowsetImpl::GetRowsetzugreifen kann.

Syntax

STDMETHOD (GetSchema s )(ULONG * pcSchemas,
   GUID ** prgSchemas,
   ULONG** prgRest);

Parameter

pcSchemas
[out] Ein Zeiger auf eine ULONG , die mit der Anzahl von Schemas gefüllt ist.

prgSchemas
[out] Ein Zeiger auf ein Array von GUIDs, das mit einem Zeiger auf ein Array von Schemarowset-GUIDs gefüllt ist.

prgRest
[out] Ein Zeiger auf ein Array von ULONGs, das mit dem Einschränkungsarray gefüllt werden soll.

Hinweise

Diese Methode gibt ein Array aller Schemarowsets zurück, die vom Anbieter unterstützt werden. Siehe IDBSchemaRowset::GetSchemas im Windows SDK.

Für die Implementierung dieser Funktion muss der Benutzer eine Schemazuordnung in der Sitzungsklasse haben. Mithilfe der Schemazuordnungsinformationen antwortet die Funktion dann mit dem Array von GUIDs für die Schemas in der Zuordnung. Dies stellt die Schemas dar, die vom Anbieter unterstützt werden.

Siehe auch

Schemarowset-Klassen und Typedef-Klassen
Supporting Schema Rowsets
SCHEMA_ENTRY
UpdatePV