Создание потребителя 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