Exemplo do AdvancedPV: Demonstra técnicas do provedor avançado
O exemplo AdvancedPV é muito semelhante a UpdatePV, mas demonstra algumas técnicas avançadas.
Normalmente os provedores de escritos usando modelos OLE DB usar CAtlArray para o armazenamento de dados. Os modelos do provedor de BD OLE DB chamar um fornecido pelo usuário Execute método para popular a matriz (por exemplo, para carregar todas as linhas do arquivo de dados no array). Outro fornecido pelo usuário método, FlushData, é usado para salvar o Sumário da matriz (por exemplo, para gravar o Sumário da matriz novamente para o arquivo de dados) .o problema dessa abordagem é que em Execute você tiver que carregar todas as linhas no conjunto de linhas e no FlushData Você tem que salvar todas as linhas ao mesmo time. Se houver um grande número de linhas no conjunto de linhas, todos os dados precisam ser armazenados na memória (no CAtlArray objeto).
AdvancedPV demonstra sistema autônomo usar uma classe especial de matriz em vez do padrão de CAtlArray matriz para tornar o provedor de carregar e salvar linhas conforme necessário. sistema autônomo linhas serão carregadas do arquivo de dados somente quando forem realmente solicitadas (através de um implementada especialmente operator[]) e sistema autônomo alterações serão gravadas novamente o arquivo assim que a alterar de Sumário da matriz.
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 compilação e executar esse exemplo
em aberto AdvancedPV.sln do arquivo de solução.
From a Compilação menu, clicar Compilação.
Crie um aplicativo de console do Win32 com o Assistente de projeto Win32.Dê suporte ATL.
Adicionar um consumidor OLE DB a do projeto (a partir de Adicionar classe, selecionar Consumidor de BD OLE DB ATL).
No assistente ATL OLE DB consumidor, clicar no Fonte de dados botão e Propriedades do vínculo de dados, selecionar Provedor AdvancedProv.(The AdvancedProv provedor deve ser registrado automaticamente quando você compilação AdvancedPV, mas se você não vê-lo listado aqui, executar regsvr32.exe em AdvancedPV.dll.)
clicar Next para ir para o Conexão guia, em seguida, em Insira o catálogo inicial a usar, especifique o catálogo inicial a ser usado (o caminho para DataFile.dat).
Em selecionar o objeto de banco de dados, em aberto Tabelas; há somente um item (o caminho para DataFile.dat).selecionar-o e clicar OK.Quando você retornar ao assistente ATL OLE DB consumidor, selecionar Tabela, renomeie a classe para algo mais curto (se necessário), sistema autônomo CMyConse clicar Concluir.Construa o projeto de consumidor.
Adicione o seguinte código principal do seu projeto:
#include "MyCons.h" int main( int argc, char* argv[] ) { // Add this code HRESULT hr = CoInitialize(NULL); CMyCons rs; hr = rs.OpenAll(); ATLASSERT( SUCCEEDED(hr)); hr = rs.MoveFirst(); while( SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET ) { printf( "%d %s %s %s %s\n", rs.m_Fixed, rs.m_Command, rs.m_Text, rs.m_Command2, rs.m_Text2 ); hr = rs.MoveNext(); } rs.CloseAll(); CoUninitialize(); return 0; }
Colocar um ponto de interrupção a CoUninitialize função; esta será tornar o console fique aberta para que você possa exibir os resultados.Execute o aplicativo, clicando no Iniciar botão (ou clicar Iniciar sem depuração from the Depurar menu).Você deve ver cinco colunas de texto impresso (índice de um e quatro colunas de texto).
Palavras-chave
Este exemplo utiliza as seguintes interfaces:
IRowsetLocateImpl, IRowsetScroll, IRowsetScrollImpl, IRowsetUpdateImpl, IConnectionPointContainerImpl, IRowsetNotifyCP, IDBCreateSessionImpl, IDBInitializeImpl, IDBPropertiesImpl, IPersistImpl, IInternalConnectionImpl, IGetDataSourceImpl, IOpenRowsetImpl, ISessionPropertiesImpl, IObjectWithSiteSessionImpl, IDBSchemaRowsetImpl, IDBCreateCommandImpl, IAccessorImpl, ICommandTextImpl, ICommandPropertiesImpl, IObjectWithSiteImpl, IConvertTypeImpl, IColumnsInfoImpl, IInternalCommandConnectionImpl
O exemplo demonstra as seguintes classes:
CSchemaRowsetImpl, CComObjectRootEx, CComObjectRootEx, CRowsetImpl, CFileArray, CSimpleRow
O exemplo demonstra as seguintes macros:
COM_INTERFACE_ENTRY, PROPERTY_INFO_ENTRY