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.
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
AufrufeIColumnsInfo::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 derICommandWithParameters
Schnittstelle abgerufen werden, wenn der Anbieter unterstütztICommandWithParameters
.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.
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.