Freigeben über


Accessoren und Rowsets

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

Accessortypen

Alle Accessoren werden von CAccessorBase abgeleitet. CAccessorBase stellt Parameter- und Spaltenbindung bereit.

Die folgende Abbildung zeigt die Accessortypen.

Diagramm, das die Beziehungen zwischen Accessor-Typen zeigt.
Accessorklassen

  • CAccessor Verwenden Sie diesen Accessor , wenn Sie die Struktur der Datenbankquelle zur Entwurfszeit kennen. CAccessor Statically binds a database record, which contains the buffer, to the data source.

  • CDynamicAccessor Verwenden Sie diesen Accessor , wenn Sie die Struktur der Datenbank zur Entwurfszeit nicht kennen. CDynamicAccessor Aufrufe IColumnsInfo::GetColumnInfo zum Abrufen der Datenbankspalteninformationen. Er erstellt und verwaltet einen Accessor und den Puffer.

  • CDynamicParameterAccessor Verwenden Sie diesen Accessor, um unbekannte Befehlstypen zu behandeln. Wenn Sie die Befehle vorbereiten, CDynamicParameterAccessor können Parameterinformationen von der ICommandWithParameters Schnittstelle abgerufen werden, wenn der Anbieter unterstützt ICommandWithParameters.

  • CDynamicStringAccessor, CDynamicStringAccessorA und CDynamicStringAccessorW Verwenden Sie diese Klassen, wenn Sie kein Wissen über das Datenbankschema haben. CDynamicStringAccessorA Ruft Daten als ANSI-Zeichenfolgen ab; CDynamicStringAccessorW Ruft Daten als Unicode-Zeichenfolgen ab.

  • CManualAccessor Mit dieser Klasse können Sie die gewünschten Datentypen verwenden, wenn der Anbieter den Typ konvertieren kann. Er behandelt sowohl Ergebnisspalten als auch Befehlsparameter.

In der folgenden Tabelle werden die Unterstützung in den Accessortypen der OLE DB-Vorlagen zusammengefasst.

Accessortyp Dynamisch Handles Params Buffer Mehrere Accessoren
CAccessor No Ja Benutzer Ja
CDynamicAccessor Ja No OLE DB-Vorlagen No
CDynamicParameterAccessor Ja Ja OLE DB-Vorlagen No
CDynamicStringAccessor[A,W] Ja No OLE DB-Vorlagen No
CManualAccessor Ja Ja Benutzer Ja

Rowsettypen

Die OLE DB-Vorlagen unterstützen drei Arten von Rowsets (siehe vorherige Abbildung): einzelne Rowsets (implementiert durch CRowset), Massen-Rowsets (implementiert durch CBulkRowset) und Array-Rowsets (implementiert durch CArrayRowset). Einzelne Rowsets rufen beim Aufrufen ein einzelnes Zeilenhandle MoveNext ab. Massenzeilen können mehrere Zeilenziehpunkte abrufen. Array-Rowsets sind Rowsets, auf die mithilfe der Arraysyntax zugegriffen werden kann.

Die folgende Abbildung zeigt die Rowsettypen.

Diagramm, das die Beziehungen zwischen Rowset-Typen zeigt.
Rowset-Klassen

Schema-Rowsets greifen nicht auf Daten im Datenspeicher zu, sondern greifen stattdessen auf Informationen zum Datenspeicher zu, die als Metadaten bezeichnet werden. Schema-Rowsets werden in der Regel in Situationen verwendet, in denen die Datenbankstruktur zur Kompilierungszeit nicht bekannt ist und zur Laufzeit abgerufen werden muss.

Siehe auch

OLE DB-Consumervorlagen