Tworzenie OLE DB konsumentów

ATL COM AppWizard i ATL obiektuKreatora można użyć do wygenerowania konsumenta OLE DB szablonu .

Aby utworzyć projekt ATL na konsumentów OLE DB

  1. Z menu plik wybierz polecenie Nowy. Zostanie wyświetlone okno dialogowe Nowy.

  2. Na karcie projekty wybierz ATL COM AppWizard.

    Nazwa projektu na karcie projekty , a następnie kliknij przycisk OK. Pojawi się ATL COM AppWizard.

  3. W AppWizard COM ATL wybierz typ projektu.

  4. Kliknij przycisk Zakończ i przycisk OK.

Następnie użyj Kreatora obiektu ATL.

Za pomocą Kreatora obiektu ATL

  1. Z menu Wstaw wybierz polecenie Nowy obiekt ATL. Pojawi się Kreator obiektu ATL.

  2. W lewym okienku wybierz Dostępu do danych. W okienku po prawej stronie pojawi się ikona konsumentów.

  3. Wybierz ikonę konsumentów i kliknij przycisk dalej. Zostanie wyświetlone okno dialogowe Właściwości kreatora obiektu ATL .

Użyj Kreatora obiektu ATL, aby ustawić właściwości dla Twojego konsumenta.

Aby ustawić właściwości konsumenta przy użyciu Kreatora obiektu ATL

  1. W oknie dialogowym Właściwości kreatora obiektu ATL kliknij przycisk Wybierz źródło danych . Zostanie wyświetlone okno dialogowe Utwórz nowe łącza danych .

  2. W oknie dialogowym Tworzenie nowego łącza danych wybierz dostawca danych OLE DB i odpowiednie opcje, w tym:
    • Umiejscowienie i dane źródło dane, które mają być stosowane przez usługodawcę.

    • Identyfikator logowania i hasło dla źródła danych.

    Po wybraniu dostawcy i inne ustawienia, kliknij polecenie Połączenie testowe do weryfikacji zaznaczeń wprowadzonych w poprzednich stron pole dialogowe. Jeśli w polu wyniki sprawozdań PASSED , kliknij przycisk Zakończ, aby utworzyć łącza danych. Zostanie wyświetlone okno dialogowe Wybieranie tabeli bazy danych.

  3. W oknie dialogowym Wybieranie tabeli bazy danych należy użyć formantu drzewa zaznacz tabelę, kwerendę lub procedury przechowywanej i kliknij przycisk OK. Powrócić do okna dialogowego Właściwości kreatora obiektu ATL.

  4. Okno dialogowe wypełnia nazw Krótką nazwę, klasy, akcesori .H plik. Cztery ostatnie opierają się na krótką nazwę. Można edytować te nazwy, w razie potrzeby.

  5. Kreator tworzy CCommand-na konsumenta domyślnie. Jeśli wolisz CTable-na konsumentów, wybierz przycisk Tabela.

  6. Wybierz zmiany, Wstawianiei Usuwanie do obsługi zmiana, wstawianie i usuwanie rekordów w zestawie wierszy, jeśli jest to wymagane.

  7. Kliknij przycisk OK.

Generatory kreatora klasy akcesor i klasy polecenia (lub tabela), jak pokazano w próbce wyjściowej poniżej. Klasa polecenia zawiera kod, aby otworzyć źródło danych i wierszy, które określono w kreatorze. Klasy akcesor zawiera mapę kolumnę w tabeli bazy danych, wybranej.

// 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_

Wróć do używania szablonów OLE DB konsumentów

Index