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. |