Compartilhar via


Arquitetura de modelo de provedor de BD OLE

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

Gráfico da arquitetura do provedor

Junto com os arquivos de origem criados pelo Assistente do OLE DB para provedor, 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 oferecem 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 do provedor OLE DB não implementam os objetos de armazenamento e de linha.

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

Componente

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 propriedades de conexão, como nome de fonte de dados, 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.Ele é um pouco semelhante ao ODBC HSTMT em que pode haver muitas sessões simultâneas ativas.

O objeto de sessão é o link principal para obter a funcionalidade de banco de dados OLE.Para obter um comando, transação ou objeto rowset, vá através do 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 por 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 trata operações nos dados, como consultas.Ele pode manipular instruções parametrizadas ou sem parâmetros.

O objeto de comando também é responsável pela manipulação ligações para parâmetros e colunas de saída.Uma ligaçã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 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.Este objeto não é diretamente suportado pelos modelos de provedor do OLE DB (isto é, você criar seu próprio objeto).

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

Consulte também

Referência

OLE DB Interfaces

Conceitos

OLE DB Provider modelos (C++)