Conjunto de registros (ODBC)

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

Um objeto CRecordset representa um conjunto de registros selecionados de uma fonte de dados. Os registros podem ser de:

  • Uma tabela.

  • Uma consulta.

  • Um procedimento armazenado que acessa uma ou mais tabelas.

Um exemplo de um conjunto de registros baseado em uma tabela é “todos os clientes,” que acessa uma tabela Cliente. Um exemplo de uma consulta é “todas as faturas para Joe Smith”. Um exemplo de um conjunto de registros baseado em um procedimento armazenado (às vezes chamado de uma consulta predefinida) é “todas as contas inadimplentes”, que invoca um procedimento armazenado no banco de dados de back-end. Um conjunto de registros pode juntar duas ou mais tabelas da mesma fonte de dados, mas não tabelas de diferentes fontes de dados.

Observação

Alguns drivers ODBC dão suporte a exibições do banco de dados. Nesse sentido, uma exibição é uma consulta originalmente criada com a instrução CREATE VIEW SQL.

Recursos do conjunto de registros

Todos os objetos do conjunto de registros compartilham as seguintes funcionalidades:

  • Se a fonte de dados não for somente leitura, será possível especificar que seu conjunto de registros seja atualizável, acrescentável ou somente leitura. Se o conjunto de registros for atualizável, você poderá escolher métodos de bloqueio pessimistas ou otimistas, desde que o driver forneça o suporte de bloqueio apropriado. Se a fonte de dados for somente leitura, o conjunto de registros será somente leitura.

  • É possível chamar as funções de membro para rolar até os registros selecionados.

  • É possível filtrar os registros para restringir quais deles são selecionados dos que estão disponíveis.

  • É possível classificar os registros em ordem crescente ou decrescente, com base em uma ou mais colunas.

  • É possível parametrizar o conjunto de registros para qualificar a seleção do conjunto de registros em tempo de execução.

Snapshots e Dynasets

Há dois tipos de entidade de segurança de conjuntos de registros: instantâneos e dynasets. A classe CRecordset é compatível com ambos. Cada um compartilha as características comuns de todos os conjuntos de registros, mas cada um também estende a funcionalidade comum de sua própria maneira especializada. Instantâneos fornecem uma exibição estática dos dados e são úteis para relatórios e outras situações em que você deseja ter uma exibição dos dados como eles existiam em um momento específico. Dynasets são úteis quando você deseja que as atualizações feitas por outros usuários fiquem visíveis no conjunto de registros sem ter que repetir a consulta ou atualizar o conjunto de registros. Instantâneos e dynasets podem ser atualizáveis ou somente leitura. Para refletir os registros adicionados ou excluídos por outros usuários, chame CRecordset::Requery.

CRecordset também permite dois outros tipos de conjuntos de registros: conjuntos de registros dinâmicos e conjuntos de registros de somente encaminhamento. Os conjuntos de registros dinâmicos são semelhantes aos dynasets; no entanto, os conjuntos de registros dinâmicos refletem quaisquer registros adicionados ou excluídos sem chamar CRecordset::Requery. Por esse motivo, conjuntos de registros dinâmicos geralmente são caros em relação ao tempo de processamento no DBMS e muitos drivers ODBC não dão suporte a eles. Em contraste, conjuntos de registros de somente encaminhamento fornecem o método de acesso a dados mais eficiente para conjuntos de registros que não exigem atualizações nem rolagem regressiva. Por exemplo, você poderia usar um conjunto de registros de somente encaminhamento para migrar dados de uma fonte de dados para outra, em que só é necessário percorrer os dados em uma direção progressiva. Para usar um conjunto de registros de somente encaminhamento, é necessário fazer o seguinte:

  • Passe a opção CRecordset::forwardOnly como o parâmetro nOpenType da função de membro Open.

  • Especifique CRecordset::readOnly no parâmetro dwOptions do Open.

    Observação

    Para saber mais sobre requisitos de driver ODBC para suporte a dynaset, confira ODBC. Para ver uma lista de drivers ODBC incluídos nesta versão do Visual C++ e para saber como obter outros drivers, confira Lista de Drivers ODBC.

Seus conjuntos de registros

Para cada tabela, exibição ou procedimento armazenado distinto que você deseja acessar, você normalmente define uma classe derivada de CRecordset. (A exceção é uma junção de banco de dados, na qual um conjunto de registros representa colunas de duas ou mais tabelas). Ao derivar uma classe de conjunto de registros, você habilita o mecanismo RFX (troca de campo de registro) ou o mecanismo RFX em massa, que são semelhantes ao mecanismo DDX (troca de dados de caixa de diálogo). RFX e RFX em massa simplificam a transferência de dados da fonte de dados para seu conjunto de registros; além disso, a RFX transfere dados do seu conjunto de registros para a fonte de dados. Para obter mais informações, confira RFX (troca de campo de registro) e Conjunto de registros: buscar registros em cassa (ODBC).

Um objeto de conjunto de registros fornece acesso a todos os registros selecionados. Role até os vários registros selecionados usando as funções de membro CRecordset, como MoveNext e MovePrev. Ao mesmo tempo, um objeto de conjunto de registros representa apenas um dos registros selecionados, o registro atual. É possível examinar os campos do registro atual declarando as variáveis de membro de classe do conjunto de registros que correspondem a colunas da tabela ou dos registros resultantes da consulta de banco de dados. Para saber mais sobre membros de dados de conjunto de registros, confira Conjunto de registros: arquitetura (ODBC).

Os tópicos a seguir explicam os detalhes de como usar os objetos do conjunto de registros. Os tópicos estão listados em categorias funcionais e em uma ordem de procura natural a fim de permitir leitura sequencial.

Tópicos sobre a mecânica de abertura, leitura e fechamento de conjuntos de registros

Tópicos sobre a mecânica de modificação de conjuntos de registros

Tópicos sobre técnicas um pouco mais avançadas

Tópicos sobre como os conjuntos de registros funcionam

Confira também

ODBC (conectividade de banco de dados aberto)
Consumo ODBC do MFC
Transação (ODBC)