Архитектура шаблона поставщика OLE DB
Источники данных и сеансы
Архитектура поставщика OLE DB включает объект источника данных и один или несколько сеансов. Объект источника данных — это исходный объект, который каждый поставщик должен создать экземпляр. Когда приложение-потребитель нуждается в данных, он создает объект источника данных для запуска поставщика. Объект источника данных создает объект сеанса (с помощью IDBCreateSession
интерфейса), через который потребитель подключается к объекту источника данных. Программисты ODBC могут рассматривать объект источника данных как эквивалентный HENV
объекту и объекту сеанса в эквиваленте HDBC
.
Вместе с исходными файлами, созданными мастером поставщика 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 (т. е. создается собственный объект). |
Дополнительные сведения см. в следующих разделах: