Exemplo do multiRead atributos: Lê a tabela de banco de dados usando vários segmentos

O exemplo de atributos MultiRead demonstra como usar as classes de modelo de consumidor OLE DB ler por meio de uma tabela em um banco de dados usando vários segmentos.

The Exemplo multiRead é a versão nonattributed neste exemplo.

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

  1. Abra o arquivo da solução MultiRead.sln.

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

  3. From a Depurar menu, clicar Iniciar sem depuração.

  4. Uma caixa de diálogo multi-threaded leitura aparecerá, solicitando que você especifique o número de segmentos usar para ler a tabela.Clique em Run.

    O resultado será exibido sistema autônomo texto na caixa de diálogo multi-threaded superior, por exemplo, 15 records in 7 ms.

Como funciona o exemplo

O exemplo contém o CMultiDlg classe, que é usado para mostrar uma caixa de diálogo. Com essa caixa de diálogo, o usuário insere o número de segmentos usar para ler a tabela.Quando o usuário clica o Executar botão, ReadRecords na DBRead.h é chamado para em em aberto o banco de dados, a sessão e a tabela e para criar o número necessário de segmentos.sistema autônomo ele abre a tabela, a função define a DBPROP_CANHOLDROWS propriedade sistema autônomo true para que o provedor permite ao usuário recuperar novas linhas sem liberar linhas recuperadas anteriormente.Esse recurso é necessário porque vários threads recuperar novas linhas sistema autônomo outros threads ainda estão processando seus segmentos corrente.

O exemplo também mostra como estender o padrão CRowset classe, criando um novo CMyRowset classe, que deriva de CRowsete adiciona o MoveAndProcess função de membro. A rotina de início de cada thread é o ReadTable função e a classe de tabela é passado para esta função. A função chama a rotina MoveAndProcess ler cada registro. Observação o acessador classe CProduct é definida para que os dados não serão recuperados automatitelefonary na MoveNext telefonar. Isso evita que o buffer está em conflito com outros segmentos, e não há necessidade de proteger MoveNext com uma seção crítica. The MoveAndProcess chamadas de função MoveNexte, em seguida, chama GetDataHere para colocar os dados diretamente em uma variável local dessa função. ProcessRecord é chamado para cada registro recuperado e a função simplesmente rastreia os valores do registro por padrão.

Cada thread conta o número de registros que ele lê e aqueles são rastreados no participante, juntamente com um total e o time decorrido, que é exibido na caixa de diálogo check-out.

Observação:

O exemplo MultiRead lê o arquivo de banco de dados MultiRead.mdb.O código de exemplo assume que este arquivo está localizado no diretório corrente.

Atributos

Este exemplo usa os seguintes atributos:

db_column, db_source, db_table, exe, helpstring, módulo, nome, segmentação, uuid, versão

Palavras-chave

O exemplo demonstra as seguintes classes:

CAccessor, CDataSource, CDBPropSet, CRowset, CSession, CTable

O exemplo demonstra as seguintes macros:

BEGIN_ACCESSOR_MAP, BEGIN_ACCESSOR, COLUMN_ENTRY, END_ACCESSOR, END_ACCESSOR_MAP, DEFINE_COMMAND

O exemplo demonstra as seguintes funções:

CreateThread, WaitForMultipleObjects GetCurrentThreadId, GetExitCodeThread,

Observação:

Alguns dos exemplos, sistema autônomo esta, não foram modificados para refletir sistema autônomo alterações nos assistentes, bibliotecas e compilador Visual C++, mas ainda Demonstre sistema autônomo concluir a tarefa desejada.

Consulte também

Outros recursos

Exemplos de atributos do ATL