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


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

Обновлен: Ноябрь 2007

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

Архитектура поставщика 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

Объект набора строк служит для представления данных из источника данных. Объект отвечает за привязку этих данных и все базовые операции с этими данными (обновление, выборку, перемещение и др.). Для хранения данных и управления ими всегда используется объект набора строк.

Команда (CCommand)

(обязательный) IAccessor

(обязательный) IColumnsInfo

(обязательный) ICommand

(обязательный) ICommandProperties

(обязательный) ICommandText

(обязательный) IConvertType

(необязательный) IColumnsRowset

(необязательный) ICommandPersist

(необязательный) ICommandPrepare

(необязательный) ICommandWithParameters

(необязательный) ISupportErrorInfo

(необязательный) ICommandStream

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

Объект команды также отвечает за обработку привязки параметров и выходных столбцов. Привязка представляет собой структуру, содержащую информацию об извлечении столбца из набора строк. Она содержит такую информацию, как порядковый номер, тип данных, длина и состояние.

Транзакция (необязательный)

(обязательный) IConnectionPointContainer

(обязательный) ITransaction

(необязательный) ISupportErrorInfo

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

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

См. также

Основные понятия

Шаблоны поставщика OLE DB (С++)

Ссылки

OLE DB Interfaces