Compartilhar via


Conjunto de registros: criando e fechando conjuntos de registros (ODBC)

Observação

O Assistente de consumidor ODBC do MFC não está disponível no Visual Studio 2019 e posterior. É possível criar um consumidor manualmente.

Este tópico aplica-se às classes ODBC do MFC.

Para usar um conjunto de registros, construa um objeto de conjunto de registros e, em seguida, chame sua função de membro Open para executar a consulta do conjunto de registros e selecionar registros. Quando você conclui o conjunto de registros, feche e destrua o objeto.

Este tópico explica:

Criando conjuntos de registros em tempo de execução

Antes de poder criar objetos recordset em seu programa, normalmente você escreve classes de conjunto de registros específicas do aplicativo. Para saber mais sobre essa etapa preliminar, confira Como adicionar um consumidor ODBC do MFC.

Abra um objeto de instantâneo ou dynaset quando você precisar selecionar registros de uma fonte de dados. O tipo de objeto a ser criado depende do que você precisa fazer com os dados em seu aplicativo e daquilo com o que o driver ODBC é compatível. Para saber mais, confira Dynaset e Instantâneo.

Para abrir um conjunto de registros

  1. Construa um objeto da classe derivada pelo CRecordset.

    É possível construir o objeto no heap ou no registro de ativação de uma função.

  2. Ou modifique o comportamento do conjunto de registros padrão. Para ver as opções disponíveis, confira Como definir opções de conjunto de registros.

  3. Chame a função de membro Open do objeto.

No construtor, passe um ponteiro para um objeto CDatabase ou passe NULL para usar um objeto de banco de dados temporário que a estrutura constrói e abre com base na cadeia de conexão retornada pela função de membro GetDefaultConnect. O objeto CDatabase já pode estar conectado a uma fonte de dados.

A chamada para Open usa o SQL para selecionar registros da fonte de dados. O primeiro registro selecionado (se houver) é o registro atual. Os valores dos campos deste registro são armazenados nos membros de dados de campo do objeto de conjunto de registros. Se registros foram selecionados, as funções de membro IsBOF e IsEOF retornarão 0.

Em sua chamada Open, você pode:

  • Especificar se o conjunto de registros é um dynaset ou um instantâneo. Os conjuntos de registros são abertos como instantâneos por padrão. Ou pode especificar um conjunto de registros somente de encaminhamento, que permite apenas rolagem para frente, um registro por vez.

    Por padrão, um conjunto de registros usa o tipo padrão armazenado no membro de dados CRecordsetm_nDefaultType. Os assistentes escrevem código para inicializar m_nDefaultType para o tipo de conjunto de registros escolhido no assistente. Em vez de aceitar este padrão, é possível substituir outro tipo de conjunto de registros.

  • Especificar uma cadeia de caracteres para substituir a instrução SELECT SQL padrão construída pelo conjunto de registros.

  • Especificar se o conjunto de registros é somente leitura ou somente de acréscimo. Os conjuntos de registros permitem a atualização completa por padrão, mas é possível limitar isso à adição de novos registros somente ou é possível cancelar a permissão de todas as atualizações.

O exemplo a seguir mostra como abrir um objeto de instantâneo somente leitura da classe CStudentSet, uma classe específica do aplicativo:

// Construct the snapshot object
CStudentSet rsStudent( NULL );
// Set options if desired, then open the recordset
if(!rsStudent.Open(CRecordset::snapshot, NULL, CRecordset::readOnly))
    return FALSE;
// Use the snapshot to operate on its records...

Após chamar Open, use as funções de membro e membros de dados do objeto para trabalhar com os registros. Em alguns casos, talvez convenha repetir a consulta ou atualizar o conjunto de registros para incluir alterações que ocorreram na fonte de dados. Para obter mais informações, confira Conjunto de registros: repetindo a consulta de um conjunto de registros (ODBC).

Dica

A cadeia de conexão usada durante o desenvolvimento pode não ser a mesma cadeia de conexão de que seus usuários eventuais precisam. Para obter ideias sobre como generalizar o seu aplicativo com relação a isso, confira Fonte de dados: gerenciando conexões (ODBC).

Definindo opções de conjunto de registros

Após construir seu objeto de conjunto de registros, mas antes de chamar Open para selecionar registros, talvez convenha definir algumas opções para controlar o comportamento do conjunto de registros. Para todos os conjuntos de registros, você pode:

  • Especificar um filtro para restringir a seleção de registros.

  • Especificar uma ordem de classificação para os registros.

  • Especificar parâmetros para que você possa selecionar registros usando as informações obtidas ou calculadas em tempo de execução.

Também será possível definir a opção a seguir se as condições estiverem corretas:

  • Se o conjunto de registros for atualizável e for compatível com opções de bloqueio, especifique o método de bloqueio usado para atualizações.

Observação

Para afetar a seleção de registros, é necessário definir essas opções antes de chamar a função de membro Open.

Fechando um conjunto de registros

Quando você concluir seu conjunto de registros, deverá descartá-lo e desalocar sua memória.

Para fechar um conjunto de registros

  1. Chame sua função de membro Close.

  2. Destrua o objeto de conjunto de registros.

    Se você o declarou no registro de ativação de uma função, o objeto é destruído automaticamente quando ele sai do escopo. Caso contrário, use o operador delete.

Close libera o manipulador HSTMT do conjunto de registros. Ele não destrói o objeto C++.

Confira também

Conjunto de registros (ODBC)
Conjunto de registros: rolando (ODBC)
Conjunto de registros: adicionando, atualizando e excluindo registros (ODBC)