CRecordset::em aberto

Abre o conjunto de registros por recuperar a tabela ou executar a consulta que representa o conjunto de registros.

virtual BOOL Open( 
   UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, 
   LPCTSTR lpszSQL = NULL, 
   DWORD dwOptions = none  
);

Parâmetros

  • nOpenType
    Aceite o valor padrão, AFX_DB_USE_DEFAULT_TYPEou use um dos seguintes valores do Enum OpenType:

    • CRecordset::dynaset   Um conjunto de registros com rolagem bidirecional.associação e ordenação dos registros são determinadas quando o conjunto de registros for aberto, mas as alterações feitas por outros usuários para os valores de dados ficam visíveis após uma operação de busca.Dynasets também são conhecidos sistema autônomo conjuntos de registros controlados por conjunto de chaves.

    • CRecordset::instantâneo   Um conjunto de registros estático com rolagem bidirecional.associação e ordenação dos registros são determinadas quando o conjunto de registros é aberto; os valores de dados são determinados quando os registros são procurados.As alterações feitas por outros usuários não são visíveis até que o conjunto de registros seja fechado e, em seguida, reaberto.

    • CRecordset::dynamic   Um conjunto de registros com rolagem bidirecional.Alterações feitas por outros usuários para os valores de membros, pedidos e dados serão visíveis após uma operação de busca.Observe que muitos drivers ODBC não oferecem suporte a esse tipo de conjunto de registros.

    • CRecordset::forwardOnly   Um conjunto de registros somente leitura com rolagem somente encaminhar.

      For CRecordset, o valor padrão é CRecordset::instantâneo.O mecanismo de valor padrão permite que os assistentes do Visual C++ interagir com os dois ODBC CRecordset e DAO CDaoRecordset, que têm padrões diferentes.

    Para obter mais informações sobre esses tipos de conjunto de registros, consulte o artigo Recordset (ODBC).Para obter informações relacionadas, consulte o artigo "Using bloco e Scrollable cursores" noWindows SDK.

    Cuidado:

    Se não houver suporte para o tipo solicitado, o estrutura lança uma exceção.

  • lpszSQL
    Um ponteiro de seqüência de caracteres que contém um dos seguintes procedimentos:

    • A NULO ponteiro.

    • O nome de uma tabela.

    • Um SQL selecionar demonstrativo (e opcionalmente com um SQL ONDE or ORDENAR POR cláusula).

    • A telefonar demonstrativo especificando o nome de uma consulta predefinida (procedimento armazenado).Cuidado você não inserir espaço em branco entre a chave de abertura e o telefonar palavra-chave.

    Para obter mais informações sobre essa seqüência de caracteres, consulte a tabela e a discussão sobre a função do ClassWizard em comentários.

    Observação:

    A ordem das colunas no seu conjunto de resultados deve corresponder a ordem do RFX ou BULK RFX função chama seu DoFieldExchange or DoBulkFieldExchangeSubstituir função .

  • dwOptions
    Uma máscara de bits que pode especificar uma combinação dos valores listados abaixo.Algumas delas são mutuamente exclusivas.O valor padrão é Nenhum.

    • CRecordset::none   Nenhum conjunto de opções.O valor do parâmetro é mutuamente exclusivo com todos os outros valores.Por padrão, o conjunto de registros pode ser atualizado com edição or Excluir e permite acrescentar novos registros com AddNew.Capacidade de atualização depende na fonte de dados bem sistema autônomo em onOpenType opção especificada. Otimização para adições em massa não estará disponível.Busca de linha em massa não será implementado.Registros excluídos não serão ignorados durante a navegação do conjunto de registros.Marcadores não estão disponível.Verificando o campo sujo automático é implementado.

    • CRecordset::appendOnly   Não permitir que edição or Excluir no conjunto de registros.Permitir que AddNew somente. Essa opção é mutuamente exclusivo com CRecordset::readOnly.

    • CRecordset::readOnly   Abra o conjunto de registros sistema autônomo somente leitura.Essa opção é mutuamente exclusivo com CRecordset::appendOnly.

    • CRecordset::optimizeBulkAdd   Use um preparado demonstrativo SQL otimizar adicionando muitos registros ao mesmo time.Aplica-se apenas se você não estiver usando a função de ODBC API SQLSetPos para atualizar o conjunto de registros.A primeira atualização determina quais campos são marcados com problemas.Essa opção é mutuamente exclusivo com CRecordset::useMultiRowFetch.

    • CRecordset::useMultiRowFetch   Implemente buscar a linha em massa para permitir várias linhas a serem recuperados em uma operação de busca único. Isso é um recurso avançado, destinado a melhorar desempenho; no entanto, troca de campo de registro em massa não é suportada pelo ClassWizard.Essa opção é mutuamente exclusiva com CRecordset::optimizeBulkAdd.Observe que, se você especificar CRecordset::useMultiRowFetch, em seguida, a opção CRecordset::noDirtyFieldCheck será ativada automaticamente (buffer duplo não estará disponível); em conjuntos de registros de somente de encaminhar, a opção CRecordset::useExtendedFetch será ativada automaticamente.Para obter mais informações sobre buscar a linha em massa, consulte o artigo conjunto de registros: Buscando os registros em massa (ODBC).

    • CRecordset::ignorarDeletedRecords ignorar todos os registros excluídos ao navegar pelo conjunto de registros.Isso reduzirá o desempenho em determinadas buscas relativos.Essa opção inválido é válida em conjuntos de registros somente de encaminhar.Se você chamar Mover with the nRows parâmetro definido como 0 e o CRecordset::skipDeletedRecords conjunto de opções de , Mover irá declarar.Observe que CRecordset::skipDeletedRecords é semelhante a driver de remessa, que significa que linhas excluídas são removidas do conjunto de registros.No entanto, se seu driver packs registros, em seguida, ele irá ignorar somente os registros que você excluir, não irá ignorar registros excluídos por outros usuários enquanto o conjunto de registros é em aberto.CRecordset::skipDeletedRecords ignorará linhas excluídas por outros usuários.

    • CRecordset::useBookmarks   Pode usar indicadores no conjunto de registros, se houver suporte.Indicadores lenta a recuperação de dados mas melhorar o desempenho de navegação de dados.inválido em conjuntos de registros somente de encaminhar.Para obter mais informações, consulte o artigo conjunto de registros: Indicadores e absoluto Positions (ODBC).

    • CRecordset::noDirtyFieldCheck   Desative a opção automático campo sujo verificação (buffer duplo).Isso melhorará o desempenho; no entanto, você deve manualmente marcar campos sistema autônomo sujo, chamando o SetFieldDirty e SetFieldNull membro functions.Note duplo ou armazenamento em buffer na classe CRecordset é semelhante ao buffer duplo na classe CDaoRecordset. No entanto, em CRecordset, você não pode ativar o buffer duplo em campos individuais; você ativá-lo para todos os campos ou desativá-lo para todos os campos. Observe que, se você especificar a opção CRecordset::useMultiRowFetch, em seguida, CRecordset::noDirtyFieldCheck serão ativadas automaticamente; no entanto, SetFieldDirty e SetFieldNull não pode ser usado em conjuntos de registros que implementam a busca de linha em massa.

    • CRecordset::executeDirect   Não use uma demonstrativo preparada do SQL.Para melhorar o desempenho, especifique esta opção se o Repetir a consultafunção de membro nunca será chamada.

    • CRecordset::useExtendedFetch   Implementar SQLExtendedFetch em vez de SQLFetch.Isso foi projetado para implementação em massa linha buscar em conjuntos de registros somente de encaminhar.Se você especificar a opção CRecordset::useMultiRowFetch em um conjunto de encaminhar ou somente registros, em seguida CRecordset::useExtendedFetch será ativada automaticamente.

    • CRecordset::userAllocMultiRowBuffers   O usuário alocará buffers de armazenamento de dados.Use esta opção em conjunto com CRecordset::useMultiRowFetch Se você deseja alocar armazenamento; caso contrário, a estrutura automaticamente irá alocar o armazenamento necessário. Para obter mais informações, consulte o artigo conjunto de registros: Buscando os registros em massa (ODBC).Observe que especificar CRecordset::userAllocMultiRowBuffers sem especificar CRecordset::useMultiRowFetch resultará em uma declaração com falha.

Valor de retorno

Diferente de zero se o CRecordset objeto foi em aberto com êxito; caso contrário, 0 se CDatabase::em aberto (se chamado) retornará 0.

Comentários

Você deve telefonar essa função de membro para executar a consulta definida pelo conjunto de registros.Antes de chamar em aberto, é preciso construir o objeto de conjunto de registros.

Conexão deste conjunto de registros com a fonte de dados depende de como você construir o conjunto de registros antes de chamar em aberto.Se você passar um CDatabase usa o objeto para o construtor de conjunto de registros que não tenha sido conectado à fonte de dados, a função de membroGetDefaultConnect para tentar em em aberto o objeto de banco de dados.Se você passar NULO para o construtor de conjunto de registros, o construtor constrói um CDatabase objeto para você, e em aberto tenta conectar-se o objeto de banco de dados.Para obter detalhes sobre como fechar o conjunto de registros e a conexão sob essas circunstâncias diferentes, consulte Fechar.

Observação:

Acesso a uma fonte de dados por meio de um CRecordset objeto sempre é compartilhado. Ao contrário de CDaoRecordset classe, não é possível usar um CRecordset objeto para em em aberto uma fonte de dados com acesso exclusivo.

Quando você telefonar em aberto, uma consulta, geralmente um SQL selecionar demonstrativo, seleciona os registros com base em critérios mostrados na tabela a seguir.

Valor do parâmetro lpszSQL

Registros selecionados são determinados pela

Exemplo

NULL

A seqüência de caracteres retornada pelo GetDefaultSQL.

 

Nome da tabela SQL

Todas as colunas da lista da tabela na DoFieldExchange ou DoBulkFieldExchange.

"Customer"

Nome da consulta predefinidos (procedimento armazenado)

As colunas que da consulta é definida para retornar.

"{call OverDueAccts}"

selecionar lista de colunas de DElista de tabela

Colunas especificadas da tabela (s) especificado.

"SELECT CustId, CustName FROM

Customer"

Cuidado:

Tenha cuidado para não inserir espaço extra em branco na sua seqüência de caracteres SQL.Por exemplo, se você inserir espaço em branco entre a chave de abertura e o telefonar palavra-chave, MFC será misinterpret a seqüência de caracteres SQL sistema autônomo um nome da tabela e incorporar um selecionar demonstrativo, que resultará em uma exceção sendo lançada.Da mesma forma, se sua consulta predefinida usa um parâmetro de saída, não insira espaços em branco entre a chave de abertura e o '? ' símbolo.Finalmente, você não deve inserir espaço em branco antes da chave de abertura em um telefonar demonstrativo ou antes do selecionar palavra-chave umselecionar demonstrativo.

O procedimento habitual é passar NULO to em aberto; neste caso, em aberto calls GetDefaultSQL.Se você estiver usando um derivado CRecordset classe, GetDefualtSQL dá nome da tabela especificado no ClassWizard.Em vez disso, você pode especificar outras informações no lpszSQL parâmetro.

Tudo o que você passar, em aberto constrói uma seqüência de caracteres SQL final para a consulta (a seqüência de caracteres pode ter SQL ONDE and ORDENAR POR cláusulas anexadas ao lpszSQL seqüência de caracteres é passada) e, em seguida, executa a consulta. Você pode examinar a seqüência construída chamando GetSQL após chamar em aberto.Para obter detalhes adicionais sobre como o conjunto de registros constrói uma demonstrativo SQL e seleciona os registros, consulte o artigo Recordset: Como Recordsets selecionar registros (ODBC).

Os membros de dados do campo de sua classe de conjunto de registros são vinculados às colunas de dados selecionado.Se todos os registros são retornados, o primeiro registro se tornará o registro corrente.

Se desejar definir opções para o conjunto de registros, sistema autônomo um filtro ou classificar, especifique esses após você construir o objeto de conjunto de registros, mas antes de chamar em aberto.Se você desejar atualizar os registros no conjunto de registros depois que o conjunto de registros já estiver em aberto, telefonar Repetir a consulta.

Para obter mais informações, incluindo exemplos adicionais, consulte o artigo conjunto de registros (ODBC), conjunto de registros: Como Recordsets selecionar registros (ODBC)e conjunto de registros: Criando e fechando Recordsets (ODBC).

Exceções

Esse método pode lançar exceções do tipo CDBException * and CMemoryException*.

Exemplo

Os exemplos de código a seguir mostram diferentes formas do em aberto telefonar.

// rsSnap, rsLName, and rsDefault are CRecordset or CRecordset-derived 
// objects

// Open rs using the default SQL statement, implement bookmarks, and turn 
// off automatic dirty field checking
rsSnap.Open(CRecordset::snapshot, NULL, CRecordset::useBookmarks | 
   CRecordset::noDirtyFieldCheck);

// Pass a complete SELECT statement and open as a dynaset
rsLName.Open(CRecordset::dynaset, _T("Select L_Name from Customer"));

// Accept all defaults
rsDefault.Open();

Requisitos

Cabeçalho: afxdb.h

Consulte também

Referência

Classe CRecordset

Gráfico de hierarquia

CRecordset::CRecordset

CRecordset::fechar

CRecordset::GetDefaultSQL

CRecordset::GetSQL

CRecordset::m_strFilter

CRecordset::m_strSort

CRecordset::repetir consulta

Outros recursos

CRecordset membros