Compartilhar via


Exemplo do UpdatePV: Implementa um provedor do OLE DB atualizável

O exemplo UpdatePV é um exemplo de provedor OLE DB modelos que demonstra como implementar um provedor atualizável (de leitura/gravar).Especificamente, ele demonstra como realizar imediatos e adiados inserções/atualizações/exclusões.UpdatePV também demonstra como usar conjuntos de linhas de esquema (que tornam mais fácil para alguns assistentes interagir com um provedor).UpdatePV também demonstra o IRowsetLocateImpl a classe, sistema autônomo o MyProv.

Consulte o Exemplo de AdvancedPV para ilustrações de técnicas adicionais sobre carregar e salvar dados com um provedor.

Observação de segurança:

Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina.

Para obter exemplos e instruções para instalá-los:

  • Sobre o Visual Studio Ajuda menu, clicar Exemplos.

    Para obter mais informações, consulte Localizando arquivos de exemplo.

  • A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.

  • Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.

Criando e executando o exemplo

Para demonstrar a amostra do objetivo recursos, compilação amostra, criar um projeto de cliente com um acessador para o provedor e criar um aplicativo de console para acessar e imprimir os dados.

Para compilação e executar esse exemplo

  1. em aberto UpdatePV.sln do arquivo de solução.

  2. From a Compilação menu, clicar Criar solução.

  3. Criar um projeto de consumidor com o Assistente de projeto ATL (tornar um .dll atribuídas).

  4. Adicionar um consumidor OLE DB a projeto consumidor (a partir de Adicionar classe, selecionar Consumidor de BD OLE DB ATL).

  5. No assistente ATL OLE DB consumidor, clicar no Fonte de dados botão e Propriedades do vínculo de dados, selecionar UpProv provedor OLE DB.(The UpProv provedor deve ser registrado automaticamente quando você criar UpdatePV, mas se você não vir a que ele relacionado aqui, execute o regsvr32.exe no UpdatePV.dll.)

  6. clicar Next para ir para o Conexão guia, em seguida, em Insira o catálogo inicial a usar, certifique-se de que o nome do caminho para MyData.txt está correto.

  7. clicar OK.The selecionar o objeto de banco de dados caixa de diálogo será exibida, em seguida, em aberto Tabelas; há somente um item: o nome do caminho do MyData.txt.selecionar-o e clicar OK.Retornar ao assistente ATL OLE DB consumidor.

  8. No assistente ATL OLE DB consumidor, selecionar Tabela, renomeie a classe para algo mais curto (se necessário), sistema autônomo CMyConse clicar Concluir.

  9. Descartar a caixa de diálogo de aviso de segurança que surge por pressionamento de OK.

  10. Remova esta linha de CMyCons.h:

    #error Security Issue: The connection string may contain a password
    

    Esta linha impedirá a compilação, mas é inserida para alertá-lo para o fato de que (em cenários reais) informações confidenciais devem ser protegidas.

  11. Criar o projeto de consumidor ao clicar com o botão direito do mouse no nó do projeto no O gerenciador de soluções e clicando em Compilação.

  12. Crie um novo aplicativo de console.No arquivo .cpp, inclua o cabeçalho do consumidor e modificar o código da seguinte maneira:

    #include "stdafx.h"
    #include <atldbcli.h>
    #include "..\consumer\cmycons.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
       HRESULT hr = CoInitialize(NULL);
    
       CMyCons c;
    
       hr = c.OpenAll();
       ATLASSERT( SUCCEEDED( hr ) );
    
       hr = c.MoveFirst();
       while( SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET )
       {
          printf( "%d %s %s %s %s\n", c.m_Fixed, c.m_Command, c.m_Text, 
             c.m_Command2, c.m_Text2 );
          hr = c.MoveNext();
       }
    
       c.CloseAll();
       CoUninitialize();
       return 0;
    }
    
  13. Colocar um ponto de interrupção no CoUninitialize função; esta será tornar o console fique aberta para que você possa exibir os resultados.Execute o aplicativo de console do ambiente de desenvolvimento clicando o Iniciar botão.Você deve ver cinco colunas de texto impresso (um índice de coluna e quatro colunas de texto).

Como funciona o exemplo

UpdatePV se baseia nas funções E/s de arquivos de time de execução C.Isso representa um armazenamento de dados.Especificamente, o exemplo usa um arquivo de texto que consiste em um emparelhar de elementos de dados e transforma em um conjunto de linhas.O exemplo vem com um arquivo de texto, MyData.txt, que contém pares de elementos de dados.No entanto, você pode executá-lo contra qualquer arquivo de texto (ele será apenas analisar tudo em palavra duas tuplas).

UpdatePV executa suas operações de leitura com RUpdateRowset::executar (conjunto de linhas.h).As operações de gravar são manipuladas com RUpdateRowset::FlushData (conjunto de linhas.h).Essas são funções chamadas por provedor OLE DB modelos do sistema autônomo parte da operação normal do provedor.O exemplo utiliza o OLE DB provedor modelos IRowsetChangeImpl e IRowsetUpdateImpl classes. The IRowsetChangeImpl classe oferece suporte imediatos inserções/atualizações/exclusões. The IRowsetUpdateImpl suporte de classe adiada inserções/atualizações/exclusões. The IRowsetUpdateImpl classe herda de IRowsetChangeImpl. Para obter mais informações em/configuração de obtenção de dados, leia Criando um provedor atualizável na documentação do Visual C++ e Atualizando dados em conjuntos de linhas in the Referência do programador do OLE DB in the Windows SDK documentação.

UpdatePV também fornece suporte para conjuntos de linhas do esquema.Esses conjuntos de linhas do esquema permitem que os consumidores obter informações sobre um provedor sem abrir um conjunto de registros ou executar um comando.Os assistentes do Visual C++ usam conjuntos de linhas de esquema para gerar os acessadores de lado do cliente.As principais funções são CUpdateSessionTRSchemaRowset::executar, CUpdateSessionColSchemaRowset::executar, and CUpdateSessionPTSchemaRowset::executar.Todas as três funções retornam informações sobre quais tabelas o provedor oferece suporte, colunas nas tabelas, e tipos de dados nas tabelas.Para obter mais informações sobre conjuntos de linhas do esquema, consulte o IDBSchemaRowset interface a Referência do programador do OLE DB.

Palavras-chave

O exemplo demonstra as seguintes interfaces:

IRowsetChange, IRowsetUpdateImpl

O exemplo demonstra as seguintes propriedades:

DBPROP_IRowsetChange, DBPROP_IRowsetUpdate

Consulte também

Outros recursos

Exemplos do ATL