A criação de um consumidor sem utilizar um assistente
O exemplo a seguir pressupõe que você está adicionando suporte ao consumidor do OLE DB para um projeto existente do ATL. Se você deseja adicionar o suporte ao consumidor do OLE DB para um aplicativo MFC, você deve executar o Assistente de aplicativo do MFC, que cria todo o suporte necessário e invoca as rotinas MFC necessárias para executar o aplicativo.
Para adicionar suporte ao consumidor do OLE DB sem usar a ATL OLE DB consumidor Wizard:
No arquivo 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 seqüência de operações a seguir:
Crie uma classe de registro de usuário que vincula as colunas para as variáveis locais. Neste exemplo, CMyTableNameAccessor é a classe de registro do usuário (consulte Registros de usuário). Essa classe contém o mapa de coluna e o mapa de parâmetro. Declarar um membro de dados na classe de registro de usuário para cada campo que você especificar no seu mapa de coluna; para cada um desses membros de dados, também declare um membro de dados de status e um membro de dados de comprimento. Para obter mais informações, consulte Membros de dados do campo Status nos acessadores de Wizard-Generated.
Observação Se você escrever seu próprio consumidor, as variáveis de dados devem vir antes das variáveis de status e de comprimento.
Criar uma instância de uma fonte de dados e uma sessão. Decidir que tipo de conjunto de linhas e de assessor para usar e criar uma instância de um conjunto de linhas usando CCommand ou CTable:
CDataSource ds; CSession ss; class CMyTableName : public CCommand<CAccessor<CMyTableNameAccessor> >
Chame CoInitialize ao inicializar com. Isso geralmente é chamado no código principal. For example:
HRESULT hr = CoInitialize(NULL);
Chame CDataSource::Open ou uma de suas variações.
Abrir uma conexão com a fonte de dados, abrir a sessão e abrir 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, conjunto de linhas definir propriedades usando CDBPropSet::AddProperty e passá-los como um parâmetro para rs.Open. Para obter um exemplo de como isso é feito, consulte GetRowsetProperties na Métodos de Consumer Wizard-Generated.
Agora você pode usar o conjunto de linhas para recuperar/manipular os dados.
Quando seu aplicativo é concluído, feche a conexão, a sessão e o conjunto de linhas:
rs.Close(); ss.Close(); ds.Close();
Se você estiver usando um comando, convém chamar ReleaseCommand após Fechar. O exemplo de código em CCommand::Close mostra como chamar Fechar e ReleaseCommand.
Chame CoUnInitialize para cancelar a inicialização de COM. Isso geralmente é chamado no código principal.
CoUninitialize();