Criando um consumidor sem usar um assistente
O exemplo a seguir pressupõe que você está adicionando suporte a consumidor OLE DB para um projeto ATL existente.Se você deseja adicionar suporte de consumidor OLE DB a um aplicativo MFC, você deve executar o Assistente de aplicativo MFC, que cria todo o suporte necessário e invoca MFC rotinas necessárias para executar o aplicativo.
Para adicionar o suporte de consumidor OLEDB sem usar o ATL OLE DB consumidor Assistente:
No arquivo de stdafx.h, acrescente o seguinte #include instruções:
#include <atlbase.h> #include <atldbcli.h> #include <atldbsch.h> // if you are using schema templates
Programaticamente, um consumidor normalmente realiza a sequência das operações a seguir:
Crie uma classe de registro de usuário que vincula colunas para as variáveis locais.Neste exemplo, CMyTableNameAccessor é a classe de registro de usuário (consulte Registros de usuário).Essa classe contém o MAP de coluna e o MAP de parâmetro.Declarar um membro de dados em que a classe de registro do usuário para cada campo que você especificar no MAP de coluna; para cada um desses membros de dados, também declarar um membro de dados de status e um membro de dados de comprimento.Para obter mais informações, consulte Campo status dados Members in acessadores gerado pelo Assistente.
Observação:
Se você escrever seu próprio consumidor, as variáveis de dados devem vir antes das variáveis de status e comprimento.
Criar uma instância de uma fonte de dados e uma sessão.Decidir o tipo de acessador e conjunto de linhas para usar e, em seguida, criar uma instância de um conjunto de linhas usando CCommand or CTable:
CDataSource ds; CSession ss; class CMyTableName : public CCommand<CAccessor<CMyTableNameAccessor> >
De telefonarEm coInitialize ao inicializar COM.Isso geralmente é chamado no código principal.Por exemplo:
HRESULT hr = CoInitialize(NULL);
De telefonarCDataSource::em aberto ou uma de suas variações.
em em aberto uma conexão com a fonte de dados, em em aberto a sessão e abra e inicializar o conjunto de linhas (e se um comando também executá-lo):
hr = ds.Open(); hr = ss.Open(ds); hr = rs.Open(); // (Open also executes the command)
Opcionalmente, defina sistema autônomo propriedades do conjunto de linhas utilizando CDBPropSet::AddProperty e passá-los sistema autônomo um parâmetro para rs.Open. Para obter um exemplo de como fazer isso, consulte GetRowsetProperties em Consumidor métodos gerados pelo Assistente.
Agora você pode usar o conjunto de linhas para recuperar/manipular os dados.
Quando seu aplicativo estiver concluído, fechar a conexão, sessão e conjunto de linhas:
rs.Close(); ss.Close(); ds.Close();
Se você estiver usando um comando, talvez queira telefonar ReleaseCommand Depois de Fechar.O exemplo de código em CCommand::Close mostra como telefonar Fechar and ReleaseCommand.
De telefonarCoUnInitialize para inicializar o COM.Isso geralmente é chamado no código principal.
CoUninitialize();