Создание объекта-получателя без помощи мастера
В следующем примере предполагается, что вы добавляете поддержку потребителя 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
Программным образом объект-получатель обычно выполняет следующую последовательность операций.
Создайте класс записей пользователя, который привязывает столбцы к локальным переменным. В этом примере
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();