Arquitetura de modelo do provedor de banco de dados OLE

Origens de dados e sessões

A arquitetura do provedor OLE DB inclui um objeto de fonte de dados e uma ou mais sessões. O objeto de fonte de dados é o objeto inicial que cada provedor deve instanciar. Quando um aplicativo de consumidor precisa de dados, ele cria o objeto de fonte de dados para iniciar o provedor. O objeto de fonte de dados cria um objeto de sessão (usando a interface IDBCreateSession) por meio do qual o consumidor se conecta ao objeto da fonte de dados. Os programadores ODBC podem considerar o objeto da fonte de dados como equivalente ao objeto HENV e o objeto de sessão como equivalente ao HDBC.

Provider architecture diagram.

Junto com os arquivos de origem criados pelo Assistente de Provedor OLE DB, os modelos OLE DB implementam um objeto de fonte de dados. Uma sessão é um objeto que corresponde a TSession do OLE DB.

Interfaces obrigatórias e opcionais

Os modelos de provedor OLE DB fornecem implementações pré-empacotadas para todas as interfaces necessárias. Interfaces obrigatórias e opcionais são definidas pelo OLE DB para vários tipos de objetos:

Os modelos de provedor OLE DB não implementam os objetos de linha e armazenamento.

A tabela a seguir lista interfaces obrigatórias e opcionais para os objetos listados acima de acordo com a Documentação do SDK do OLE DB 2.6.

Componente Interface Comentar
Fonte de dados (CDataSource) [obrigatório] IDBCreateSession

[obrigatório] IDBInitialize

[obrigatório] IDBProperties

[obrigatório] IPersist

[opcional] IConnectionPointContainer

[opcional] IDBAsynchStatus

[opcional] IDBDataSourceAdmin

[opcional] IDBInfo

[opcional] IPersistFile

[opcional] ISupportErrorInfo
Conexão do consumidor com o provedor. O objeto é usado para especificar propriedades na conexão, como ID de usuário, a senha e o nome da fonte de dados. O objeto também pode ser usado para administrar uma fonte de dados (criar, atualizar, excluir, tabelas e assim por diante).
Sessão (CSession) [obrigatório] IGetDataSource

[obrigatório] IOpenRowset

[obrigatório] ISessionProperties

[opcional] IAlterIndex

[opcional] IAlterTable

[opcional] IBindResource

[opcional] ICreateRow

[opcional] IDBCreateCommand

[opcional] IDBSchemaRowset

[opcional] IIndexDefinition

[opcional] ISupportErrorInfo

[opcional] ITableCreation

[opcional] ITableDefinition

[opcional] ITableDefinitionWithConstraints

[opcional] ITransaction

[opcional] ITransactionJoin

[opcional] ITransactionLocal

[opcional] ITransactionObject
O objeto de sessão é uma conversa entre um consumidor e um provedor. É semelhante ao ODBC HSTMT, pois pode haver muitas sessões simultâneas ativas.

O objeto de sessão é o link primário para acessar a funcionalidade do OLE DB. Para chegar a um objeto de comando, transação ou conjunto de linhas, você passa pelo objeto de sessão.
Rowset (CRowset) [obrigatório] IAccessor

[obrigatório] IColumnsInfo

[obrigatório] IConvertType

[obrigatório] IRowset

[obrigatório] IRowsetInfo

[opcional] IChapteredRowset

[opcional] IColumnsInfo2

[opcional] IColumnsRowset

[opcional] IConnectionPointContainer

[opcional] IDBAsynchStatus

[opcional] IGetRow

[opcional] IRowsetChange

[opcional] IRowsetChapterMember

[opcional] IRowsetCurrentIndex

[opcional] IRowsetFind

[opcional] IRowsetIdentity

[opcional] IRowsetIndex

[opcional] IRowsetLocate

[opcional] IRowsetRefresh

[opcional] IRowsetScroll

[opcional] IRowsetUpdate

[opcional] IRowsetView

[opcional] ISupportErrorInfo

[opcional] IRowsetBookmark
O objeto rowset são os dados da fonte de dados. O objeto é usado para as associações desses dados e todas as operações básicas (atualização, busca, movimentação e outras) nos dados. Você sempre tem um objeto de conjunto de linhas para manter e manipular dados.
Command (CCommand) [obrigatório] IAccessor

[obrigatório] IColumnsInfo

[obrigatório] ICommand

[obrigatório] ICommandProperties

[obrigatório] ICommandText

[obrigatório] IConvertType

[opcional] IColumnsRowset

[opcional] ICommandPersist

[opcional] ICommandPrepare

[opcional] ICommandWithParameters

[opcional] ISupportErrorInfo

[opcional] ICommandStream
O objeto de comando manipula operações em dados como consultas. Ele pode lidar com instruções parametrizadas ou não parametrizadas.

O objeto de comando também é responsável por manipular associações para parâmetros e colunas de saída. Uma associação é uma estrutura que contém informações sobre como uma coluna, em um conjunto de linhas, deve ser recuperada. Ela contém informações como ordinal, tipo de dados, comprimento e status.
Transação (opcional) [obrigatório] IConnectionPointContainer

[obrigatório] ITransaction

[opcional] ISupportErrorInfo
O objeto de transação define uma unidade atômica de trabalho em uma fonte de dados e determina como essas unidades de trabalho se relacionam entre si. Esse objeto não tem suporte direto pelos modelos de provedor OLE DB (ou seja, você cria seu objeto).

Para Mais informações, consulte os seguintes tópicos:

Confira também

Modelos de Provedor OLE DB
OLE DB Interfaces