MFC: usando classes de banco de dados com documentos e exibições

Você pode usar as classes de banco de dados do MFC com ou sem a arquitetura de documento/exibição. Este tópico enfatiza o trabalho com documentos e exibições. Ele explica:

Para conhecer alternativas, confira MFC: usando classes de banco de dados sem documentos e exibições.

Escrevendo um aplicativo baseado em formulário

Muitos aplicativos de acesso a dados são baseados em formulário. A interface do usuário é um formulário que contém controles nos quais o usuário examina, insere ou edita dados. Para tornar seu aplicativo baseado em formulário, use a classe CRecordView. Quando você executa o Assistente de Aplicativo MFC e seleciona o tipo de cliente ODBC na página Suporte ao Banco de Dados, o projeto usa CRecordView para a classe view.

Em um aplicativo baseado em formulário, cada objeto de exibição de registro armazena um ponteiro para um objeto CRecordset. O mecanismo rfx (troca de campos de registro) da estrutura troca dados entre o conjunto de registros e a fonte de dados. O mecanismo de DDX (troca de dados de caixa de diálogo) troca dados entre os membros de dados de campo do objeto de conjunto de registros e os controles no formulário. CRecordView também fornece funções de manipulador de comando padrão para navegar de um registro para outro no formulário.

Para criar um aplicativo baseado em formulário com o assistente de aplicativo, confira Criando um aplicativo MFC baseado em formulário e Suporte ao banco de dados, Assistente de Aplicativo MFC.

Para obter uma discussão completa sobre formulários, confira Exibições de registro.

Usando conjuntos de registros em documentos e exibições

Muitos aplicativos simples baseados em formulário não precisam de documentos. Se o aplicativo é mais complexo, você provavelmente deseja usar um documento como um proxy para o banco de dados, armazenando um objeto CDatabase que se conecta à fonte de dados. Os aplicativos baseados em formulário geralmente armazenam um ponteiro para um objeto de conjunto de registros no modo de exibição. Outros tipos de aplicativos de banco de dados armazenam conjuntos de registros e o objeto CDatabase no documento. Aqui estão algumas possibilidades para usar documentos em aplicativos de banco de dados:

  • Se você estiver acessando um conjunto de registros em um contexto local, crie um objeto CRecordset localmente nas funções membro do documento ou na exibição, conforme necessário.

    Declare um objeto de conjunto de registros como uma variável local em uma função. Passe NULL para o construtor, o que faz com que a estrutura crie e abra um objeto CDatabase temporário para você. Como alternativa, passe um ponteiro para um objeto CDatabase. Use o conjunto de registros dentro da função e deixe-o ser destruído automaticamente quando a função for encerrada.

    Quando você passa NULL para um construtor de conjunto de registros, a estrutura usa informações retornadas pela função membro GetDefaultConnect do conjunto de registros para criar um objeto CDatabase e abri-lo. Os assistentes implementam GetDefaultConnect para você.

  • Se você estiver acessando um conjunto de registros durante o tempo de vida do documento, insira um ou mais objetos CRecordset em seu documento.

    Construa os objetos do conjunto de registros quando inicializar o documento ou conforme necessário. Você poderá escrever uma função que retorna um ponteiro para o conjunto de registros se ele já existir ou construir e abrir o conjunto de registros se ele ainda não existir. Feche, exclua e recrie o conjunto de registros conforme necessário ou chame a função membro Requery dele para atualizar os registros.

  • Se você estiver acessando uma fonte de dados durante o tempo de vida do documento, insira um objeto CDatabase ou armazene um ponteiro para um objeto CDatabase nela.

    O objeto CDatabase gerencia uma conexão com sua fonte de dados. O objeto é construído automaticamente durante a construção do documento, e você chama a função membro Open dele quando inicializa o documento. Ao construir objetos de conjunto de registros em funções membro do documento, você passa um ponteiro para o objeto CDatabase do documento. Isso associa cada conjunto de registros à respectiva fonte de dados. O objeto de banco de dados geralmente é destruído quando o documento é fechado. Os objetos de conjunto de registros normalmente são destruídos quando saem do escopo de uma função.

Outros fatores

Os aplicativos baseados em formulário geralmente não têm nenhum uso para o mecanismo de serialização de documentos da estrutura, portanto, talvez você queira remover, desabilitar ou substituir os comandos Novo e Abrir no menu Arquivo. Confira o artigo Serialização: serialização em comparação com entrada/saída do banco de dados.

Talvez você também queira usar as muitas possibilidades de interface do usuário às quais a estrutura pode dar suporte. Por exemplo, você pode usar vários objetos CRecordView em uma janela divisora, abrir vários conjuntos de registros em janelas filho MDI (interface de vários documentos) diferentes e assim por diante.

Talvez você queira implementar a impressão do que estiver em sua exibição, seja um formulário implementado com CRecordView ou algo diferente. Como classes derivadas de CFormView, CRecordView não dá suporte à impressão, mas você pode substituir a função membro OnPrint para permitir a impressão. Para saber mais, confira a classe CFormView.

Talvez você não queira usar documentos e exibições. Nesse caso, confira MFC: usando classes de banco de dados sem documentos e exibições.

Confira também

Classes de banco de dados MFC