Freigeben über


Erstellen eines Consumers ohne Assistent

Im folgenden Beispiel wird davon ausgegangen, dass Sie einem bestehenden ATL-Projekt OLE DB-Consumerunterstützung hinzufügen. Wenn Sie OLE DB-Consumerunterstützung zu einer MFC-Anwendung hinzufügen möchten, sollten Sie den MFC-Anwendungs-Assistenten ausführen. Er erstellt die benötigte Unterstützung und ruft die zur Ausführung der Anwendung notwendigen MFC-Routinen auf.

So fügen Sie OLE DB-Consumerunterstützung ohne Verwendung des ATL-OLE DB-Consumer-Assistenten hinzu:

  • Fügen Sie in der Datei stdafx.h die folgenden #include-Anweisungen an:

    #include <atlbase.h>
    #include <atldbcli.h>
    #include <atldbsch.h> // if you are using schema templates
    

Programmtechnisch führt ein Consumer in der Regel die folgende Operationsabfolge aus:

  • Erstellen einer Benutzerdatensatz-Klasse, die Spalten an lokale Variablen bindet. In diesem Beispiel ist CMyTableNameAccessor die Benutzerdatensatzklasse (siehe Benutzerdatensätze). Diese Klasse enthält die Spaltenzuordnung und die Parameterzuordnung. Deklarieren Sie in der Benutzerdatensatz-Klasse einen Datenmember für jedes in der Spaltenzuordnung festgelegte Feld. Deklarieren Sie außerdem für jeden dieser Datenmember einen Statusdatenmember und einen Längendatenmember. Weitere Informationen finden Sie unter Feldstatus-Datenmember in vom Assistenten generierten Accessoren.

    Tipp

    Wenn Sie einen eigenen Consumer schreiben, müssen die Datenvariablen vor den Status- und Längenvariablen stehen.

  • Instanziieren einer Datenquelle und einer Sitzung. Entscheiden Sie, welcher Accessor- und Rowsettyp verwendet wird, und instanziieren Sie dann ein Rowset mit CCommand oder CTable:

    CDataSource ds;
    CSession ss;
    class CMyTableName : public CCommand<CAccessor<CMyTableNameAccessor> >
    
  • Aufrufen von CoInitialize zum Initialisieren von COM. Dies erfolgt üblicherweise im Hauptcode. Beispiel:

    HRESULT hr = CoInitialize(NULL);
    
  • Aufrufen von CDataSource::Open oder einer Variation davon.

  • Öffnen einer Verbindung zur Datenquelle, Öffnen der Sitzung und Öffnen und Initalisieren des Rowsets (bei einem Befehl auch Ausführen dieses Befehls):

    hr = ds.Open();
    hr = ss.Open(ds);
    hr = rs.Open();            // (Open also executes the command)
    
  • Optional Festlegen von Rowseteigenschaften mit CDBPropSet::AddProperty und Übergeben dieser Eigenschaften als Parameter an rs.Open. Ein Beispiel zur Vorgehensweise finden Sie unter GetRowsetProperties im Thema Vom Consumer-Assistenten generierte Methoden.

  • Sie können nun das Rowset zum Abrufen/Bearbeiten der Daten verwenden.

  • Schließen Sie nach Fertigstellung der Anwendung die Verbindung, die Sitzung und das Rowset:

    rs.Close();
    ss.Close();
    ds.Close();
    

    Wenn Sie einen Befehl verwenden, empfiehlt es sich, ReleaseCommand nach Close aufzurufen. Im Codebeispiel unter CCommand::Close wird gezeigt, wie Close und ReleaseCommand aufgerufen werden.

  • Aufrufen von CoUnInitialize, um COM nicht zu initialisieren. Dies erfolgt üblicherweise im Hauptcode.

    CoUninitialize();
    

Siehe auch

Referenz

Erstellen eines OLE DB-Consumers