Compartilhar via


Arquitetura de modelo do OLE DB Provider

Fontes 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 origem de dados é o objeto inicial, deve criar uma instância de cada provedor. Quando um aplicativo do consumidor precisa de dados, ele co-creates o objeto de origem de dados para iniciar o provedor. O objeto de origem de dados cria um objeto de sessão (usando o IDBCreateSession interface) por meio do qual o consumidor se conecta a objeto de fonte de dados. Programadores do ODBC podem pensar que o objeto de origem de dados como sendo o equivalente a HENV e o objeto de sessão como equivalente a HDBC.

Gráfico da arquitetura do provedor

Juntamente com os arquivos de origem foi criados pelo Assistente do OLE DB para provedor, os modelos OLE DB implementam um objeto de fonte de dados. Uma sessão é um objeto que corresponde do OLE DB TSession.

Interfaces obrigatórias e opcionais

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

Observe que os modelos de provedor do OLE DB não implementar objetos de linha e de armazenamento.

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

Component

Interface

Comment

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 para o provedor. O objeto é usado para especificar as propriedades na conexão, como o nome de fonte de dados, a senha e ID de usuário. 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 lançada

[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 representa uma única conversação entre um consumidor e provedor. É um pouco parecido com o ODBC HSTMT que pode haver muitas sessões simultâneas ativo.

O objeto de sessão é o link principal para obter a funcionalidade do OLE DB. Para obter um comando, a transação ou o objeto rowset, percorra o objeto de sessão.

Conjunto de linhas (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 representa os dados da fonte de dados. O objeto é responsável pelas ligações de dados e quaisquer operações básicas (atualização, busca, movimentação e outros) nos dados. Você sempre terá um objeto rowset para conter e manipular dados.

Comando (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 as operações de dados, como consultas. Ele pode manipular a instruções parametrizadas ou sem parâmetros.

O objeto de comando também é responsável pela manipulação de ligaçõ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. Ele contém informações como, por exemplo, ordinal, o tipo de dados, o comprimento e o 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 as unidades de trabalho se relacionam entre si. Este objeto não é diretamente suportado pelos modelos de provedor do OLE DB (ou seja, você criar seu próprio objeto).

For more information, see the following topics:

Consulte também

Referência

OLE DB Interfaces

Conceitos

Modelos do OLE DB Provider (C++)