Erstellen eines Consumers ohne Assistent

Im folgenden Beispiel wird vorausgesetzt, dass Sie OLE DB-Consumerunterstützung einem vorhandenen ATL-Projekt hinzufügen. Wenn Sie einer MFC-Anwendung OLE DB-Consumerunterstützung hinzufügen möchten, sollten Sie den MFS-Anwendungsassistenten ausführen, der für alle erforderliche Unterstützung sorgt und MFC-Routinen aufruft, die zum Ausführen der Anwendung erforderlich sind.

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

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

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

Programmgesteuert führt ein Consumer in der Regel die folgende Sequenz von Vorgängen aus:

  1. Erstellen Sie eine Benutzerdatensatzklasse, die Spalten an lokale Variablen bindet. In diesem Beispiel ist CMyTableNameAccessor die Benutzerdatensatzklasse (siehe Benutzerdatensätze). Diese Klasse enthält die Spalten- und Parameterzuordnung. Deklarieren Sie in der Benutzerdatensatzklasse für jedes Feld, das Sie in der Spaltenzuordnung angeben, einen Datenmember; deklarieren Sie auch für jeden dieser Datenmember einen Statusdatenmember und einen Längendatenmember. Weitere Informationen finden Sie unter Feldstatus-Datenmember in vom Assistenten generierten Accessoren.

    Hinweis

    Wenn Sie einen eigenen Consumer erstellen, müssen die Datenvariablen in der Reihenfolge vor den Status- und Längenvariablen liegen.

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

    CDataSource ds;
    CSession ss;
    class CMyTableName : public CCommand<CAccessor<CMyTableNameAccessor>>
    
  • Rufen Sie CoInitialize zur COM-Initialisierung auf. Dies wird im Hauptcode aufgerufen. Zum Beispiel:

    HRESULT hr = CoInitialize(NULL);
    
  • Rufen Sie CDataSource::Open oder eine seine Varianten auf.

  • Öffnen Sie eine Verbindung mit der Datenquelle, öffnen Sie die Sitzung, und öffnen und initialisieren Sie das Rowset (und führen Sie auch ggf. einen Befehl aus):

    hr = ds.Open();
    hr = ss.Open(ds);
    hr = rs.Open();            // (Open also executes the command)
    
  • Legen Sie optional Rowseteigenschaften mit CDBPropSet::AddProperty fest, und übergeben Sie sie als Parameter an rs.Open. Ein Beispiel hierfür finden Sie unter GetRowsetProperties in Vom Consumer-Assistenten generierte Methoden.

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

  • Wenn Ihre Anwendung abgeschlossen ist, schließen Sie Verbindung, Sitzung und Rowset:

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

    Wenn Sie einen Befehl verwenden, sollten Sie ReleaseCommand nach Close aufrufen. Das Codebeispiel in CCommand::Close zeigt Ihnen, wie Sie Close und ReleaseCommand aufrufen.

  • Rufen Sie CoUnInitialize auf, um die COM-Initialisierung aufzuheben. Dies wird im Hauptcode aufgerufen.

    CoUninitialize();
    

Siehe auch

Erstellen eines OLE DB-Consumers