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
.
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 | Comentário |
---|---|---|
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: