MFC: utilizzo di classi di database con documenti e viste

È possibile usare le classi di database MFC con o senza l'architettura di documento/visualizzazione. In questo argomento viene sottolineato l'utilizzo di documenti e visualizzazioni. Spiega:

Per le alternative, vedere MFC: Uso di classi di database senza documenti e viste.

Scrittura di un'applicazione basata su form

Molte applicazioni di accesso ai dati sono basate su moduli. L'interfaccia utente è un modulo contenente controlli in cui l'utente esamina, immette o modifica i dati. Per fare in modo che il modulo dell'applicazione sia basato su , usare la classe CRecordView. Quando si esegue la Creazione guidata applicazione MFC e si seleziona il tipo di client ODBC nella pagina Supporto database, il progetto usa CRecordView per la classe di visualizzazione.

In un'applicazione basata su form ogni oggetto visualizzazione record archivia un puntatore a un CRecordset oggetto . Il meccanismo RFX (Record Field Exchange) del framework scambia i dati tra il recordset e l'origine dati. Il meccanismo DDX (Dialog Data Exchange) scambia i dati tra i membri dati di campo dell'oggetto recordset e i controlli nel modulo. CRecordView fornisce inoltre funzioni del gestore dei comandi predefinite per lo spostamento dal record al record nel form.

Per creare un'applicazione basata su form con la procedura guidata dell'applicazione, vedere Creazione di un'applicazione MFC basata su form e supporto del database, Creazione guidata applicazione MFC.

Per una descrizione completa dei moduli, vedere Visualizzazioni record.

Uso di recordset in documenti e viste

Molte semplici applicazioni basate su form non necessitano di documenti. Se l'applicazione è più complessa, è probabile che si voglia usare un documento come proxy per il database, archiviando un CDatabase oggetto che si connette all'origine dati. Le applicazioni basate su form in genere archiviano un puntatore a un oggetto recordset nella visualizzazione. Altri tipi di applicazioni di database archivia recordset e CDatabase oggetti nel documento. Ecco alcune possibilità per l'uso di documenti nelle applicazioni di database:

  • Se si accede a un recordset in un contesto locale, creare un CRecordset oggetto localmente nelle funzioni membro del documento o della vista, in base alle esigenze.

    Dichiarare un oggetto recordset come variabile locale in una funzione. Passare NULL al costruttore, che fa sì che il framework crei e apra automaticamente un oggetto temporaneo CDatabase . In alternativa, passare un puntatore a un CDatabase oggetto . Usare il recordset all'interno della funzione e lasciarlo distruggere automaticamente quando la funzione viene chiusa.

    Quando si passa NULL a un costruttore di recordset, il framework usa le informazioni restituite dalla funzione membro del GetDefaultConnect recordset per creare un CDatabase oggetto e aprirlo. Le procedure guidate implementano GetDefaultConnect per l'utente.

  • Se si accede a un recordset durante la durata del documento, incorporare uno o più CRecordset oggetti nel documento.

    Costruire gli oggetti recordset quando si inizializza il documento o in base alle esigenze. È possibile scrivere una funzione che restituisce un puntatore al recordset se esiste già o costruisce e apre il recordset se non esiste ancora. Chiudere, eliminare e ricreare il recordset in base alle esigenze oppure chiamare la relativa Requery funzione membro per aggiornare i record.

  • Se si accede a un'origine dati durante la durata del documento, incorporare un CDatabase oggetto o archiviare un puntatore a un CDatabase oggetto.

    L'oggetto CDatabase gestisce una connessione all'origine dati. L'oggetto viene costruito automaticamente durante la costruzione di documenti e si chiama la relativa Open funzione membro quando si inizializza il documento. Quando si creano oggetti recordset nelle funzioni membro del documento, si passa un puntatore all'oggetto del CDatabase documento. In questo modo ogni recordset viene associato all'origine dati. L'oggetto di database viene in genere eliminato definitivamente quando il documento viene chiuso. Gli oggetti recordset vengono in genere eliminati definitivamente quando escono dall'ambito di una funzione.

Altri fattori

Le applicazioni basate su form spesso non usano il meccanismo di serializzazione dei documenti del framework, pertanto è possibile rimuovere, disabilitare o sostituire i comandi Nuovo e Apri dal menu File . Vedere l'articolo Serializzazione: serializzazione e input/output del database.

È anche possibile usare le numerose possibilità dell'interfaccia utente supportate dal framework. Ad esempio, è possibile usare più CRecordView oggetti in una finestra di suddivisione, aprire più recordset in diverse finestre figlio dell'interfaccia documento (MDI) e così via.

È possibile implementare la stampa di qualsiasi elemento nella visualizzazione, indipendentemente dal fatto che si tratti di un modulo implementato con CRecordView o qualcos'altro. Poiché le classi derivate da CFormViewnon CRecordView supportano la stampa, ma è possibile eseguire l'override della funzione membro per consentire la OnPrint stampa. Per altre informazioni, vedere classe CFormView.

Potrebbe non essere necessario usare documenti e visualizzazioni. In tal caso, vedere MFC: Uso di classi di database senza documenti e viste.

Vedi anche

Classi di database MFC