Bestimmen des geeigneten Accessortyps

Es ist möglich, die Datentypen eines Rowsets zur Kompilierungs- oder zur Laufzeit zu bestimmen.

Wenn Sie die Datentypen zur Kompilierungszeit bestimmen müssen, verwenden Sie hierfür einen statischen Accessor (z. B. CAccessor). Sie können die Datentypen manuell oder mithilfe des ATL-OLE DB-Consumer-Assistenten bestimmen.

Wenn Sie die Datentypen zur Laufzeit bestimmen müssen, verwenden Sie hierfür einen dynamischen Accessor (CDynamicAccessor oder einen untergeordneten Accessor) oder einen manuellen Accessor (CManualAccessor). In diesen Fällen können Sie für das Rowset GetColumnInfo aufrufen, damit Informationen zur Spaltenbindung zurückgegeben werden, anhand derer Sie Typen bestimmen können.

In der folgenden Tabelle sind die Accessortypen der Consumervorlagen aufgeführt. Jeder Accessor besitzt Vor- und Nachteile. Je nach Situation sollte jedoch einer der Accessortypen Ihren Bedürfnissen gerecht werden.

Accessorklassen

Bindung

Parameter

Kommentar

CAccessor

Erstellt einen Benutzerdatensatz mit COLUMN_ENTRY-Makros. Die Makros binden ein Datenmember in diesem Datensatz an den Accessor. Wenn das Rowset erstellt ist, kann die Bindung von Spalten nicht mehr aufgehoben werden.

Ja, mithilfe eines PARAM_MAP-Makroeintrags. Nach erfolgter Bindung kann die Bindung von Parametern nicht wieder aufgehoben werden.

Schnellster Accessor, da nur eine geringe Codemenge verwendet wird.

CDynamicAccessor

Automatisch.

Nein.

Sinnvoll, wenn der Datentyp in einem Rowset unbekannt ist.

CDynamicParameterAccessor

Automatisch, kann jedoch überschrieben werden.

Ja, wenn der Anbieter ICommandWithParameters unterstützt. Parameterbindung erfolgt automatisch.

Langsamer als CDynamicAccessor, aber geeignet zum Aufrufen generischer gespeicherter Prozeduren.

CDynamicStringAccessor[A,W]

Automatisch.

Nein.

Ruft Daten, auf die vom Datenspeicher aus zugegriffen wurde, als Zeichenfolgedaten ab.

CManualAccessor

Manuell mithilfe von AddBindEntry.

Manuell mithilfe von AddParameterEntry.

Sehr schnell; Parameter und Spalten werden nur einmal gebunden. Sie bestimmen den zu verwendenden Datentyp. (Ein Beispiel finden Sie unter DBVIEWER.) Benötigt mehr Code als CDynamicAccessor und CAccessor. Entspricht eher dem direkten Aufrufen von OLE DB.

CXMLAccessor

Automatisch.

Nein.

Ruft Daten, auf die vom Datenspeicher aus zugegriffen wurde, als Zeichenfolgedaten ab und formatiert diese als Daten mit XML-Tags.

Siehe auch

Konzepte

Verwenden von Accessoren