OLE Datensätze DB-Benutzer

Um einen statischen Accessor verwenden, muss der Consumer über einen Benutzerdatensatz verfügen. Der Benutzerdatensatz ist eine C++-Klasse, die Datenelemente Handle Eingabe oder Ausgabe enthält. Der ATL-Objekt-Assistent generiert einen Benutzerdatensatz für den Consumer. Sie können Methoden auf den Benutzerdatensatz für optionale Aufgaben wie die Behandlung von Befehlen hinzufügen.

Der folgende Code zeigt einen Beispiel-Datensatz, der Befehle behandelt. Im Benutzerdatensatz repräsentiert BEGIN_OLUMN_MAP ein Datenrowset, die an den Consumer von einem Anbieter übergeben. BEGIN_PARAM_MAP stellt einen Satz von Befehlsparametern dar. In diesem Beispiel wird eine CCommand -Klasse der Befehlsparameter. Die Datenmember in den Zuordnungseinträgen stellen Offsets in einem zusammenhängenden Speicherblock für jede Instanz der Klasse dar. Die COLUMN_ENTRY -Makros entsprechen den PROVIDER_COLUMN_ENTRY -Makros auf der Anbieterseite.

Weitere Informationen über das COLUMN_MAP und PARAM_MAP -Makros finden Sie unter Makros für OLE DB-Consumervorlagen.

klasse CArtists
{
Öffentliche:
/ / Daten
   CHAR M_szFirstName [20];
   CHAR M_szLastName [30];
   kurze M_nAge;
 
/ / Ausgang Bindung Karte
BEGIN_COLUMN_MAP(CArtists)
   COLUMN_ENTRY (1, M_szFirstName)
   COLUMN_ENTRY (2, M_szLastName)
   COLUMN_ENTRY (3, M_nAge)
END_COLUMN_MAP()
 
/ / Parameter binden Karte
BEGIN_PARAM_MAP(CArtists)
   COLUMN_ENTRY (1, M_nAge)
END_PARAM_MAP
}

Das folgende Beispiel zeigt den Benutzerdatensatz geändert, um mehrere Accessoren im Rowset zu unterstützen. Anstelle von BEGIN_COLUMN_MAP und END_COLUMN_MAPverwendet es für jeden Accessor BEGIN_ACCESSOR_MAP und BEGIN_ACCESSOR . Das BEGIN_ACCESSOR- Makro gibt die Accessornummer (Offset von 0 (null)) und ob der Accessor um einen Autoaccessor handelt. Autoaccessoren rufen GetData auf, um Daten automatisch auf einen Aufruf von MoveNextabzurufen. Nicht automatische Accessoren müssen Sie die Daten explizit abrufen. Einen nicht automatischen Accessor zu verwenden, wenn Sie an ein großes Datenfeld (z. B. ein Bitmapbild) binden, die Sie nicht möglicherweise abrufen für jeden Datensatz möchten.

klasse CMultiArtists
{
Öffentliche:
/ / Daten
   CHAR M_szFirstName [20];
   CHAR M_szLastName [30];
   kurze M_nAge;
 
/ / Ausgang Bindung Karte
BEGIN_ACCESSOR_MAP (CMultiArtists, 2)
   BEGIN_ACCESSOR (0, true)
    COLUMN_ENTRY (1, M_szFirstName)
    COLUMN_ENTRY (2, M_szLastName)
   END_ACCESSOR()
   BEGIN_ACCESSOR (1, false) / / kein Autoaccessor
    COLUMN_ENTRY (3, M_nAge)
   END_ACCESSOR()
END_ACCESSOR_MAP()
}

Zurück zu den OLE DB-Consumer-Vorlage-Architektur

Index