Compartilhar via


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

Às vezes, talvez você não queira usar a arquitetura de documento/exibição da estrutura em seus aplicativos de banco de dados. Este tópico explica:

Quando você não precisa de documentos

Alguns aplicativos têm um conceito distinto de um documento. Esses aplicativos normalmente carregam todo ou a maior parte de um arquivo do armazenamento na memória com um comando Abrir Arquivo. Eles gravam o arquivo atualizado de volta no armazenamento de uma só vez com um comando Salvar ou Salva como. O que o usuário vê é um arquivo de dados.

Algumas categorias de aplicativos, no entanto, não exigem um documento. Os aplicativos de banco de dados operam em termos de transações. O aplicativo seleciona registros de um banco de dados e os apresenta ao usuário, geralmente um de cada vez. O que o usuário vê geralmente é um único registro atual, que pode ser o único na memória.

Se seu aplicativo não requer um documento para armazenar dados, você pode dispensar parte ou toda a arquitetura de documento/visualização da estrutura. O quanto você distribui depende da abordagem que você prefere. Você pode:

  • Usar um documento mínimo como um local para armazenar uma conexão com sua fonte de dados, mas dispensar os recursos normais de documentos, como serialização. Isso é útil quando você deseja várias visualizações dos dados e deseja sincronizar todas as visualizações, atualizando-as todas de uma vez e assim por diante.

  • Use uma janela de quadro, na qual você desenha diretamente, em vez de usar um modo de exibição. Nesse caso, você omite o documento e armazena quaisquer dados ou conexões de dados no objeto janela com moldura.

Opções do Assistente de Aplicativo para Documentos e Exibições

O Assistente de Aplicativo MFC tem várias opções em Selecionar o suporte do banco de dados, que estão listadas na tabela a seguir. Se você usar o Assistente de Aplicativo MFC para criar um aplicativo, todas essas opções produzirão aplicativos com documentos e exibições. Algumas opções fornecem documentos e exibições que omitem funcionalidades de documentos desnecessárias. Para obter mais informações, confira Suporte ao Banco de Dados, Assistente de Aplicativo MFC.

Opção Modo de exibição Documento
Nenhum Derivada de CView. Não fornece suporte a banco de dados. Essa é a opção padrão.

Se você selecionar a opção Suporte à arquitetura de documento/exibição na página Tipo de Aplicativo, Assistente de Aplicativo MFC, você obtém suporte completo a documentos, incluindo serialização e comandos Novo, Abrir, Salvar e Salvar como no menu Arquivo. Confira Aplicativos sem Documento.
Somente arquivos de cabeçalho Derivada de CView. Fornece o nível básico de suporte de banco de dados para seu aplicativo.

Inclui Afxdb.h. Adiciona bibliotecas de link, mas não cria classes específicas do banco de dados. Você pode criar conjuntos de registros posteriormente e usá-los para examinar e atualizar registros.
Exibição de banco de dados sem suporte a arquivos Derivado de CRecordView Dá suporte a documentos, mas não dá suporte a serialização. O documento pode armazenar o conjunto de registros e coordenar várias exibições; mas não dá suporte à serialização ou aos comandos Novo, Abrir, Salvar e Salvar como. Confira Aplicativos com documentos mínimos. Se você incluir uma exibição de banco de dados, deverá especificar a fonte dos dados.

Inclui arquivos de cabeçalho de banco de dados, bibliotecas de links, uma exibição de registro e um conjunto de registros. (Disponível apenas para aplicativos com a opção Suporte à arquitetura de documento/exibição selecionada na página Tipo de Aplicativo, Assistente de Aplicativo MFC.)
Exibição de banco de dados com suporte a arquivos Derivado de CRecordView Dá suporte completo a documentos, incluindo serialização e comandos do menu Arquivo relacionados a documentos. Os aplicativos de banco de dados normalmente operam por registro em vez de por arquivo e, portanto, não precisam de serialização. No entanto, você pode ter um uso especial para serialização. Confira Aplicativos com documentos mínimos. Se você incluir uma exibição de banco de dados, deverá especificar a fonte dos dados.

Inclui arquivos de cabeçalho de banco de dados, bibliotecas de links, uma exibição de registro e um conjunto de registros. (Disponível apenas para aplicativos com a opção Suporte à arquitetura de documento/exibição selecionada na página Tipo de Aplicativo, Assistente de Aplicativo MFC.)

Para obter uma discussão sobre alternativas à serialização e usos alternativos para serialização, confira Serialização: Serialização versus Entrada/Saída do Banco de Dados.

Aplicativos com documentos mínimos

O Assistente de Aplicativo MFC tem duas opções que dão suporte a aplicativos de acesso a dados baseados em formulário. Cada opção cria uma classe de exibição derivada de CRecordView e um documento. Eles diferem no que deixam de fora do documento.

Documento sem suporte a arquivos

Selecione a opção de banco de dados do assistente de aplicativo Exibição de banco de dados sem suporte a arquivos se não precisar de serialização de documentos. O documento serve os seguintes propósitos úteis:

  • É um local conveniente para armazenar um objeto CRecordset.

    Esse uso é paralelo aos conceitos comuns de documentos: o documento armazena os dados (ou, neste caso, um conjunto de registros) e a exibição é uma exibição do documento.

  • Se o aplicativo apresentar várias exibições (como várias exibições de registro), um documento dará suporte à coordenação das exibições.

    Se várias exibições mostrarem os mesmos dados, você poderá usar a função de membro CDocument::UpdateAllViews para coordenar as atualizações de todas as exibições quando qualquer exibição alterar os dados.

Normalmente, você usa essa opção para aplicativos simples baseados em formulário. O assistente de aplicativo dá suporte a uma estrutura conveniente para esses aplicativos automaticamente.

Documento com suporte a arquivos

Selecione a opção de banco de dados do assistente de aplicativo Exibição de banco de dados com suporte de arquivos quando você tiver um uso alternativo para os comandos de menu Arquivo relacionados a documentos e serialização de documentos. Para a parte de acesso a dados do programa, você pode usar o documento da mesma forma que descrito no Documento sem suporte a arquivos. Você pode usar a funcionalidade de serialização do documento, por exemplo, para ler e gravar um documento de perfil de usuário serializado que armazena as preferências do usuário ou outras informações úteis. Para mais ideias, confira Serialização: serialização em comparação com entrada/saída do banco de dados.

O assistente de aplicativo dá suporte a essa opção, mas você deve escrever o código que serializa o documento. Armazene as informações serializadas em membros de dados do documento.

Aplicativos sem documento

Às vezes, você pode querer desenvolver um aplicativo que não use documentos ou exibições. Sem documentos, você armazena seus dados (como um objeto CRecordset) na classe de janela de quadro ou na classe de aplicativo. Quaisquer requisitos adicionais dependem se o aplicativo apresenta uma interface do usuário.

Suporte ao banco de dados com uma interface do usuário

Se você tiver uma interface de usuário (diferente, por exemplo, de uma interface de linha de comando do console), seu aplicativo desenha diretamente na área do cliente da janela do quadro, em vez de em uma exibição. Esse aplicativo não usa CRecordView, CFormView, nem CDialog para sua interface principal do usuário, mas normalmente usa CDialog para diálogos comuns.

Desenvolver aplicativos sem documentos

Como o assistente de aplicativo não dá suporte à criação de aplicativos sem documentos, você deve escrever sua própria classe derivada CWinApp e, se necessário, também criar uma classe CFrameWnd ou CMDIFrameWnd. Substitua CWinApp::InitInstance e declare um objeto de aplicativo como:

CYourNameApp theApp;

A estrutura ainda fornece o mecanismo de mapa de mensagens e muitos outros recursos.

Suporte ao banco de dados separado da interface do usuário

Alguns aplicativos não precisam de nenhuma interface do usuário ou apenas uma mínima. Por exemplo, suponha que você esteja escrevendo:

  • Um objeto intermediário de acesso a dados que outros aplicativos (clientes) chamam para processamento especial de dados entre o aplicativo e a fonte de dados.

  • Um aplicativo que processa dados sem intervenção do usuário, como um aplicativo que move dados de um formato de banco de dados para outro que faz cálculos e executa atualizações em lote.

Como nenhum documento possui o objeto CRecordset, você provavelmente deseja armazená-lo como um membro de dados incorporado em sua classe de aplicativo derivada de CWinApp. As alternativas incluem:

  • Não manter um objeto CRecordset permanente. Você pode passar NULO para seus construtores de classe de conjunto de registros. Nesse caso, a estrutura cria um objeto CDatabase temporário usando as informações na função de membro GetDefaultConnect do conjunto de registros. Essa é a abordagem alternativa mais provável.

  • Tornar o objeto CRecordset uma variável global. Essa variável deve ser um ponteiro para um objeto de conjunto de registros que você cria dinamicamente em sua substituição CWinApp::InitInstance. Isso evita tentar construir o objeto antes que a estrutura seja inicializada.

  • Usar objetos de conjunto de registros como faria no contexto de um documento ou exibição. Crie conjuntos de registros nas funções de membro de seu aplicativo ou objetos de janela de quadro.

Confira também

Classes de banco de dados MFC