Архитектура шаблона поставщика OLE DB

Источники данных и сеансы

Архитектура поставщика OLE DB включает объект источника данных и один или несколько сеансов. Объект источника данных — это исходный объект, который каждый поставщик должен создать экземпляр. Когда приложение-потребитель нуждается в данных, он создает объект источника данных для запуска поставщика. Объект источника данных создает объект сеанса (с помощью IDBCreateSession интерфейса), через который потребитель подключается к объекту источника данных. Программисты ODBC могут рассматривать объект источника данных как эквивалентный HENV объекту и объекту сеанса в эквиваленте HDBC.

Provider architecture diagram.

Вместе с исходными файлами, созданными мастером поставщика OLE DB, шаблоны OLE DB реализуют объект источника данных. Сеанс — это объект, соответствующий OLE DB TSession.

Обязательные и необязательные интерфейсы

Шаблоны поставщиков OLE DB предоставляют предварительно упаковаленные реализации для всех необходимых интерфейсов. Обязательные и необязательные интерфейсы определяются OLE DB для нескольких типов объектов:

Шаблоны поставщиков OLE DB не реализуют объекты строки и хранилища.

В следующей таблице перечислены обязательные и необязательные интерфейсы для объектов, перечисленных выше, в соответствии с документацией по пакету SDK OLE DB 2.6.

Компонент Интерфейс Комментарии
Источник данных (CDataSource) [обязательный] IDBCreateSession

[обязательный] IDBInitialize

[обязательный] IDBProperties

[обязательный] IPersist

[необязательно] IConnectionPointContainer

[необязательно] IDBAsynchStatus

[необязательно] IDBDataSourceAdmin

[необязательно] IDBInfo

[необязательно] IPersistFile

[необязательно] ISupportErrorInfo
Подключение от потребителя к поставщику. Объект используется для указания свойств подключения, таких как идентификатор пользователя, пароль и имя источника данных. Объект также можно использовать для администрирования источника данных (создание, обновление, удаление, таблицы и т. д.).
Сеанс (CSession) [обязательный] IGetDataSource

[обязательный] IOpenRowset

[обязательный] ISessionProperties

[необязательно] IAlterIndex

[необязательно] IAlterTable

[необязательно] IBindResource

[необязательно] ICreateRow

[необязательно] IDBCreateCommand

[необязательно] IDBSchemaRowset

[необязательно] IIndexDefinition

[необязательно] ISupportErrorInfo

[необязательно] ITableCreation

[необязательно] ITableDefinition

[необязательно] ITableDefinitionWithConstraints

[необязательно] ITransaction

[необязательно] ITransactionJoin

[необязательно] ITransactionLocal

[необязательно] ITransactionObject
Объект сеанса — это единая беседа между потребителем и поставщиком. Это похоже на ODBC HSTMT в том, что может быть много одновременных сеансов.

Объект сеанса является основной ссылкой для получения функциональных возможностей OLE DB. Чтобы перейти к команде, транзакции или объекту набора строк, перейдите к объекту сеанса.
Набор строк (CRowset) [обязательный] IAccessor

[обязательный] IColumnsInfo

[обязательный] IConvertType

[обязательный] IRowset

[обязательный] IRowsetInfo

[необязательно] IChapteredRowset

[необязательно] IColumnsInfo2

[необязательно] IColumnsRowset

[необязательно] IConnectionPointContainer

[необязательно] IDBAsynchStatus

[необязательно] IGetRow

[необязательно] IRowsetChange

[необязательно] IRowsetChapterMember

[необязательно] IRowsetCurrentIndex

[необязательно] IRowsetFind

[необязательно] IRowsetIdentity

[необязательно] IRowsetIndex

[необязательно] IRowsetLocate

[необязательно] IRowsetRefresh

[необязательно] IRowsetScroll

[необязательно] IRowsetUpdate

[необязательно] IRowsetView

[необязательно] ISupportErrorInfo

[необязательно] IRowsetBookmark
Объект набора строк — это данные из источника данных. Объект используется для привязок этих данных и любых основных операций (обновление, получение, перемещение и другие) данных. У вас всегда есть объект набора строк для хранения и управления данными.
Command (CCommand) [обязательный] IAccessor

[обязательный] IColumnsInfo

[обязательный] ICommand

[обязательный] ICommandProperties

[обязательный] ICommandText

[обязательный] IConvertType

[необязательно] IColumnsRowset

[необязательно] ICommandPersist

[необязательно] ICommandPrepare

[необязательно] ICommandWithParameters

[необязательно] ISupportErrorInfo

[необязательно] ICommandStream
Объект команды обрабатывает операции с данными, такими как запросы. Он может обрабатывать параметризованные или не параметризованные инструкции.

Объект команды также отвечает за обработку привязок для параметров и выходных столбцов. Привязка — это структура, содержащая сведения о том, как должен извлекаться столбец в наборе строк. Он содержит такие сведения, как порядковый номер, тип данных, длина и состояние.
Транзакция (необязательно) [обязательный] IConnectionPointContainer

[обязательный] ITransaction

[необязательно] ISupportErrorInfo
Объект транзакции определяет атомарную единицу работы в источнике данных и определяет, как эти единицы работы связаны друг с другом. Этот объект не поддерживается непосредственно шаблонами поставщиков OLE DB (т. е. создается собственный объект).

Дополнительные сведения см. в следующих разделах:

См. также

Шаблоны поставщика OLE DB
Интерфейсы OLE DB