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.
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 |
---|---|---|
[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). |
|
[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. |
|
[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. |
|
[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: