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


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

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

Добавление поддержки объекта-получателя OLE DB без использования мастера объекта-получателя OLE DB библиотеки ATL:

  • В файл Stdafx.h добавьте следующие операторы #include:

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

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

  • Создает класс записи пользователя, который связывает столбцы с локальными переменными. В данном примере 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