Erstellen eines OLE DB-Consumers

Die ATL COM AppWizard und ATL-Objekt-Assistenten können Sie zum Generieren eines Consumers OLE DB-Vorlagen .

Erstellen Sie ein ATL-Projekt für einen OLE DB-consumer

  1. Wählen Sie im Menü Datei neu. Das Dialogfeld neu angezeigt wird.

  2. Wählen Sie auf der Registerkarte Projekte ATL COM AppWizard.

    Nennen Sie das Projekt auf die Registerkarte Projekte , und klicken Sie auf OK. Die ATL COM AppWizard angezeigt wird.

  3. Wählen Sie in der ATL COM AppWizard einen Projekttyp aus.

  4. Klicken Sie auf Beenden und OK.

Als nächstes verwenden Sie den Assistenten für ATL-Objekte.

Verwenden Sie den Assistenten für ATL-Objekte

  1. Wählen Sie im Menü Einfügen Neue ATL-Objekt. Der ATL-Objekt-Assistent wird angezeigt.

  2. Wählen Sie im linken Bereich Data Access. Das Verbraucher -Symbol erscheint in der rechten.

  3. Wählen Sie das Verbraucher -Symbol, und klicken Sie auf weiter. Das Dialogfeld ATL Object Wizard Properties wird angezeigt.

Verwenden Sie den Assistenten für ATL-Objekte zum Festlegen von Eigenschaften für den consumer.

Verbraucher-Eigenschaften mit dem ATL-Objekt-Assistenten festlegen

  1. Das Dialogfeld ATL Object Wizard Properties klicken Sie auf die Schaltfläche Wählen Sie Datasource . Das Erstellen neuer Datalink -Dialogfeld wird angezeigt.

  2. Wählen Sie im Dialogfeld Neuer Datalink erstellen Sie einen OLE DB-Anbieter und die entsprechenden Optionen, einschließlich:
    • Lage und Daten Quelle für die Daten vom Anbieter verwendet werden.

    • Anmelde-ID und das Kennwort für die Datenquelle.

    Klicken Sie nach der Auswahl Ihres Providers und andere Einstellungen auf Verbindung testen , um zu überprüfen, die auf den vorherigen Dialogfeldseiten Dialogfeldseiten. Wenn das Feld Ergebnisse meldet PASSED , klicken Sie auf Beenden , um die Datenverknüpfung zu erstellen. Das Dialogfeld Datenbank-Tabelle auswählen wird angezeigt.

  3. Verwenden Sie das Strukturansicht-Steuerelement in das Dialogfeld Datenbank-Tabelle auswählen wählen eine Tabelle, Abfrage oder gespeicherte Prozedur, und klicken Sie auf OK. Sie zurück zum Dialogfeld ATL Object Wizard Properties.

  4. Das Dialogfeld füllt der Namen für den Kurznamen, Klasse, Accessorund .H-Datei. Die letzten vier basieren auf dem kurzen Namen. Sie können diese Namen bearbeiten, falls gewünscht.

  5. Der Assistent erstellt eine CCommand--basierten Consumer, standardmäßig. Wenn Sie ein CTable lieber--basierten Consumer, wählen Sie die Schaltfläche " Tabelle ".

  6. Wählen Sie das ändern, einfügen und Löschen von Datensätzen im Rowset unterstützen bei Bedarf ändern, Einfügenund Löschen.

  7. Klicken Sie auf OK.

Die Assistenten-Generatoren Ausgabe eine Accessorklasse und eine Befehlsklasse (oder Tabellenklasse) Klasse, wie im Beispiel gezeigt unten. Die Befehlsklasse enthält Code zum Öffnen der Datenquelle und im Assistenten angegebenen Rowsets. Die Accessorklasse enthält eine Spaltenzuordnung für die Datenbanktabelle, die Sie ausgewählt.

// Product.H : Declaration of the CProduct class
#ifndef __PRODUCT_H_
#define __PRODUCT_H_
class CProductAccessor
{
public:
   LONG m_ProductID;   // Number automatically assigned to new product.
   TCHAR m_ProductName[41];   // Number automatically assigned to new product.
   LONG m_SupplierID;   // Same entry as in Suppliers table.
   LONG m_CategoryID;   // Same entry as in Categories table.
   TCHAR m_QuantityPerUnit[21];   // (e.g., 24-count case, 1-liter bottle).
   DB_NUMERIC m_UnitPrice;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_UnitsInStock;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_UnitsOnOrder;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_ReorderLevel;   // Minimum units to maintain in stock.
   VARIANT_BOOL m_Discontinued;   // Yes means item is no longer available.

BEGIN_COLUMN_MAP(CProductAccessor)
   COLUMN_ENTRY(1, m_ProductID)
   COLUMN_ENTRY(2, m_ProductName)
   COLUMN_ENTRY(3, m_SupplierID)
   COLUMN_ENTRY(4, m_CategoryID)
   COLUMN_ENTRY(5, m_QuantityPerUnit)
   COLUMN_ENTRY(6, m_UnitPrice)
   COLUMN_ENTRY(7, m_UnitsInStock)
   COLUMN_ENTRY(8, m_UnitsOnOrder)
   COLUMN_ENTRY(9, m_ReorderLevel)
   COLUMN_ENTRY_TYPE(10, DBTYPE_BOOL, m_Discontinued)
END_COLUMN_MAP()
DEFINE_COMMAND(CProductAccessor, _T(" \
   SELECT \
      ProductID, \
      ProductName, \
      SupplierID, \
      CategoryID, \
      QuantityPerUnit, \
      UnitPrice, \
      UnitsInStock, \
      UnitsOnOrder, \
      ReorderLevel, \
      Discontinued  \
      FROM Products"))};
class CProduct : public CCommand<CAccessor<CProductAccessor> >
{
public:
   HRESULT Open()
   {
      HRESULT      hr;
      hr = OpenDataSource();
      if (FAILED(hr))
         return hr;
      return OpenRowset();
   }
   HRESULT OpenDataSource()
   {
      HRESULT      hr;
      CDataSource db;
      CDBPropSet   dbinit(DBPROPSET_DBINIT);
      dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("OLE_DB_NWind_Jet"));
      dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
      dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
      hr = db.Open(_T("MSDASQL"), &dbinit);
      if (FAILED(hr))
         return hr;
      return m_session.Open(db);
   }
   HRESULT OpenRowset()
   {
      // Set properties for open
      CDBPropSet   propset(DBPROPSET_ROWSET);
      propset.AddProperty(DBPROP_IRowsetChange, true);
      propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE);
      return CCommand<CAccessor<CProductAccessor> >::Open(m_session, NULL, &propset);
   }
   CSession   m_session;
};
#endif // __PRODUCT_H_

Zurück zur Verwendung des OLE DB-Consumervorlagen

Index