Створення на споживача OLE DB

ATL COM AppWizard і ATL об'єктМайстер можна використовувати для створення OLE DB шаблон-споживчі .

Щоб створити проект ATL OLE DB-споживчого

  1. У меню файл виберіть новий. З'явиться діалогове вікно Нова.

  2. На вкладці проекти вибрати ATL COM AppWizard.

    Ім'я проекту на вкладці проекти , а потім натисніть кнопку ОК. ATL COM AppWizard з'являється.

  3. В ATL COM AppWizard виберіть тип проекту.

  4. Натисніть кнопку Готово і ОК.

Далі, за допомогою майстра ATL об'єкта.

Використання майстра ATL об'єкта

  1. У меню Вставлення виберіть Новий об'єкт ATL. Відобразиться майстер об'єкт ATL.

  2. В області ліворуч виберіть Доступ до даних. В області праворуч відображається значок споживача.

  3. Виберіть піктограму споживача і натисніть кнопку Далі. З'явиться діалогове вікно Властивості майстер ATL об'єкта .

Використання майстра об'єкт ATL встановити властивості для споживача.

Щоб установити споживчі властивості за допомогою майстра ATL об'єкт

  1. У діалоговому вікні Властивості майстер ATL об'єкта натисніть кнопку Виберіть джерело даних . Відображається діалогове вікно Створити новий канал зв'язку .

  2. У діалоговому вікні " Створити новий канал " виберіть OLE DB постачальника та відповідні параметри, включаючи:
    • Розташування та даних джерело даних буде використовуватися постачальник.

    • Ідентифікатор для входу і пароль для джерела даних.

    Після вибору постачальника та інші параметри, натисніть кнопку Випробувань підключення для перевірки відборів виступила на попередній діалоговому вікні сторінок. Якщо у полі Результати » повідомляє PASSED , натисніть кнопку Готово , щоб створити зв'язок даних. З'явиться діалогове вікно Вибір таблиці бази даних.

  3. У діалоговому вікні Вибір таблиці бази даних за допомогою керування деревом виберіть таблиці, запиту або збережених процедур, і натисніть кнопку ОК. Щоб повернутися до діалогового вікна Властивості майстер ATL об'єкта.

  4. Діалоговому вікні автоматично імена для Коротке ім'я, клас, методи доступута .H файл. Останні чотири на основі коротке ім'я. Ви можете редагувати ці імена, якщо потрібно.

  5. Майстер створює CCommand-на основі споживачів за промовчанням. Якщо ви віддаєте перевагу CTable-на основі споживача, натисніть кнопку Таблиця.

  6. Виберіть для підтримки на зміни, вставлення та видалення записів у набір рядків, якщо цього вимагає зміни, Вставленнята Видалення.

  7. Натисніть кнопку ОК.

Майстер генератори методів доступу-клас і команда (або таблиці) класу, як показано у прикладі вихідний нижче. Команда класу містить код відкрити джерело даних і набір рядків, зазначені в майстрі. Клас методів доступу містить карту стовпця таблиці бази даних, ви вибрали.

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

До використання шаблонів OLE DB споживача

Index