Freigeben über


Accessoren und Rowsets

Zum Festlegen und Abrufen von Daten verwenden die OLE DB-Vorlagen einen Accessor und ein Rowset über die CAccessorRowset-Klasse.Diese Klasse kann mehrere verschiedene Accessoren behandeln.

Accessortypen

Alle Accessoren werden von CAccessorBase abgeleitet.CAccessorBase stellt sowohl Parameter- als auch Spaltenbindung bereit.

Die folgende Abbildung zeigt die verschiedenen Accessortypen.

Accessorklassen

Accessortypen

  • CAccessor   Verwenden Sie diesen Accessor, wenn Ihnen die Struktur der Datenbankquelle zur Entwurfszeit bekannt ist.CAccessor bindet den Datenbankdatensatz, der den Puffer enthält, statisch an die Datenquelle.

  • CDynamicAccessor   Verwenden Sie diesen Accessor, wenn Ihnen die Struktur der Datenbankquelle zur Entwurfszeit nicht bekannt ist.CDynamicAccessor ruft IColumnsInfo::GetColumnInfo auf, um die Spalteninformationen für die Datenbank abzurufen.Er erstellt und verwaltet einen Accessor und den Puffer.

  • CDynamicParameterAccessor   Verwenden Sie diesen Accessor, um unbekannte Befehlstypen zu verarbeiten.Während Sie die Befehle vorbereiten, kann CDynamicParameterAccessor Parameterinformationen von der ICommandWithParameters-Schnittstelle beziehen, sofern der Anbieter ICommandWithParameters unterstützt.

  • CDynamicStringAccessor, CDynamicStringAccessorA und CDynamicStringAccessorW   Verwenden Sie diese Klassen, wenn Ihnen das Datenbankschema nicht bekannt ist.CDynamicStringAccessorA empfängt Daten als ANSI-Zeichenfolgen, und CDynamicStringAccessorW empfängt Daten als Unicode-Zeichenfolgen.

  • CManualAccessor   Mit dieser Klasse können Sie alle Datentypen verwenden, die der Anbieter konvertieren kann.Sie verarbeitet sowohl Ergebnisspalten als auch Befehlsparameter.

In der folgenden Tabelle wird die Unterstützung in den OLE DB-Vorlagenaccessortypen zusammengefasst.

Accessortyp

Dynamisch

Parameterbehandlung

Puffer

Mehrere Accessoren

CAccessor

Nein

Ja

Benutzer

Ja

CDynamicAccessor

Ja

Nein

OLE DB-Vorlagen

Nein

CDynamicParameterAccessor

Ja

Ja

OLE DB-Vorlagen

Nein

CDynamicStringAccessor[A,W]

Ja

Nein

OLE DB-Vorlagen

Nein

CManualAccessor

Ja

Ja

Benutzer

Ja

Rowsettypen

Die OLE DB-Vorlagen unterstützen drei Arten von Rowsets (siehe Abbildung oben): einzelne Rowsets (implementiert durch CRowset), Sammelrowsets (implementiert durch CBulkRowset) und Arrayrowsets (implementiert durch CArrayRowset).Einzelne Rowsets rufen ein einzelnes Zeilenhandle ab, wenn MoveNext aufgerufen wird.Sammelrowsets können mehrere Zeilenhandles abrufen.Bei Arrayrowsets handelt es sich um Rowsets, auf die mithilfe von Arraysyntax zugegriffen werden kann.

Die folgende Abbildung zeigt die verschiedenen Rowsettypen.

Rowset-Klassen

RowsetType-Grafik

Schemarowsets greifen nicht auf Daten im Datenspeicher, sondern auf Informationen über den Datenspeicher, so genannte Metadaten, zu.Schemarowsets werden gewöhnlich in Situationen verwendet, in denen die Datenbankstruktur zum Zeitpunkt der Kompilierung nicht bekannt ist und zur Laufzeit ermittelt werden muss.

Siehe auch

Konzepte

OLE DB-Consumervorlagen (C++)