Поделиться через


Создание объекта-получателя без помощи мастера

В следующем примере предполагается, что вы добавляете поддержку потребителя OLE DB в существующий проект ATL. Если вы хотите добавить поддержку потребителя OLE DB в приложение MFC, следует запустить мастер приложений MFC, который создает необходимые поддержки и вызывает процедуры MFC, необходимые для выполнения приложения.

Чтобы добавить поддержку потребителя OLE DB без использования Мастера потребителя ATL OLE DB выполните приведенные далее действия.

  • В файле pch.h добавьте следующие #include инструкции:

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

Программным образом объект-получатель обычно выполняет следующую последовательность операций.

  1. Создайте класс записей пользователя, который привязывает столбцы к локальным переменным. В этом примере CMyTableNameAccessor является классом записей пользователя (см. статью Записи пользователя). Этот класс содержит сопоставление столбцов и сопоставление параметров. Объявите элемент данных в классе записей пользователя для каждого поля, которое указано в сопоставлении столбцов. Для каждого из этих элементов данных необходимо также объявить состояние элемента данных и длину элемента данных. Дополнительные сведения см. в статье Статус поля элементов данных в мастере создания методов доступа.

    Примечание.

    Если вы создаете собственный объект-получатель, переменные данных должны находиться перед переменными состояния и длины.

  • Создайте экземпляр источника данных и сеанса. Решите, какой тип метода доступа и набора строк использовать, затем создайте набор строк с помощью CCommand или CTable.

    CDataSource ds;
    CSession ss;
    class CMyTableName : public CCommand<CAccessor<CMyTableNameAccessor>>
    
  • Вызовите CoInitialize, чтобы инициализировать COM. Эту команду нужно вызывать в основном коде. Например:

    HRESULT hr = CoInitialize(NULL);
    
  • Вызовите команду CDataSource::Open или один из ее вариантов.

  • Откройте подключение к источнику данных, откройте сеанс, откройте и инициализируйте набор строк (если вы видите команду, также выполните ее).

    hr = ds.Open();
    hr = ss.Open(ds);
    hr = rs.Open();            // (Open also executes the command)
    
  • При необходимости задайте свойства набора строк с помощью CDBPropSet::AddProperty и передайте их в качестве параметра в rs.Open. Пример того, как это можно сделать, см. в разделе GetRowsetProperties статьи Методы, создаваемые мастером объекта-получателя.

  • Теперь набор строк можно использовать для получения и обработки данных.

  • Когда приложение готово, закройте подключение, сеанс и набор строк.

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

    Если вы используете команды, может потребоваться вызвать ReleaseCommand после Close. Пример кода в CCommand::Close показывает способ вызова Close и ReleaseCommand.

  • Вызовите CoUnInitialize для отмены инициализации COM. Эту команду нужно вызывать в основном коде.

    CoUninitialize();
    

См. также

Создание объекта-получателя OLE DB