MFC: utilizzo di classi di database senza documenti e viste
In alcuni casi potrebbe non essere necessario usare l'architettura di documento/visualizzazione del framework nelle applicazioni di database. In questo argomento:
Quando non è necessario usare documenti come la serializzazione dei documenti .
Opzioni della procedura guidata dell'applicazione per supportare le applicazioni senza serializzazione e senza comandi di menu File correlati a documenti, ad esempio Nuovo, Apri, Salva e Salva con nome.
Come strutturare un'applicazione senza documenti o visualizzazioni.
Quando non sono necessari documenti
Alcune applicazioni hanno un concetto distinto di un documento. Queste applicazioni in genere caricano tutto o la maggior parte di un file dall'archiviazione in memoria con un comando Apri file. Scrivono nuovamente il file aggiornato nella risorsa di archiviazione con un comando Salva file o Salva con nome. Ciò che l'utente vede è un file di dati.
Alcune categorie di applicazioni, tuttavia, non richiedono un documento. Le applicazioni di database operano in termini di transazioni. L'applicazione seleziona i record da un database e li presenta all'utente, spesso uno alla volta. Ciò che l'utente vede è in genere un singolo record corrente, che potrebbe essere l'unico in memoria.
Se l'applicazione non richiede un documento per l'archiviazione dei dati, è possibile rinunciare ad alcune o a tutte le architetture di documento/visualizzazione del framework. Quanto si distribuisce dipende dall'approccio preferito. È possibile:
Usare un documento minimo come posizione per archiviare una connessione all'origine dati, ma non con le normali funzionalità del documento, ad esempio la serializzazione. Ciò è utile quando si vogliono visualizzare più visualizzazioni dei dati e si desidera sincronizzare tutte le visualizzazioni, aggiornandole tutte contemporaneamente e così via.
Usare una finestra cornice in cui disegnare direttamente anziché usare una visualizzazione. In questo caso, si omette il documento e si archiviano dati o connessioni dati nell'oggetto finestra cornice.
Opzioni della Creazione guidata applicazione per documenti e visualizzazioni
La Creazione guidata applicazione MFC include diverse opzioni in Selezionare il supporto del database, elencato nella tabella seguente. Se si usa la Creazione guidata applicazione MFC per creare un'applicazione, tutte queste opzioni producono applicazioni con documenti e visualizzazioni. Alcune opzioni forniscono documenti e visualizzazioni che omettono funzionalità di documento non necessario. Per altre informazioni, vedere Supporto del database, Creazione guidata applicazione MFC.
Opzione | Visualizza | Document |
---|---|---|
Nessuno | Derivata da CView . |
Non è disponibile alcun supporto per il database. Si tratta dell'opzione predefinita. Se si seleziona l'opzione Supporto architettura documento/visualizzazione nella pagina Tipo di applicazione, Creazione guidata applicazione MFC, si ottiene il supporto completo dei documenti, tra cui serializzazione e Nuovi, Apri, Salva e Salva con nome dal menu File. Vedere Applicazioni senza documento. |
Solo file di intestazione | Derivata da CView . |
Fornisce il livello di base di supporto del database per l'applicazione. Include Afxdb.h. Aggiunge librerie di collegamenti, ma non crea classi specifiche del database. È possibile creare recordset in un secondo momento e usarli per esaminare e aggiornare i record. |
Vista database senza supporto per i file | Derivato da CRecordView |
Fornisce supporto per i documenti, ma nessun supporto per la serializzazione. Il documento può archiviare recordset e coordinare più visualizzazioni; non supporta la serializzazione o i comandi New, Open, Save e Save As . Vedere Applicazioni con documenti minimi. Se si include una vista di database, è necessario specificare l'origine dei dati. Include file di intestazione del database, librerie di collegamento, una vista record e un recordset. (Disponibile solo per le applicazioni con il Opzione di supporto dell'architettura documento/visualizzazione selezionata nella pagina Tipo di applicazione, Creazione guidata applicazione MFC. |
Visualizzazione del database con supporto per i file | Derivato da CRecordView |
Fornisce supporto completo per i documenti, inclusi i comandi di menu File correlati a documenti e serializzazione. Le applicazioni di database in genere operano su base per record anziché su base per ogni file e pertanto non richiedono la serializzazione. Tuttavia, potrebbe essere disponibile un uso speciale per la serializzazione. Vedere Applicazioni con documenti minimi. Se si include una vista di database, è necessario specificare l'origine dei dati. Include file di intestazione del database, librerie di collegamento, una vista record e un recordset. (Disponibile solo per le applicazioni con il Opzione di supporto dell'architettura documento/visualizzazione selezionata nella pagina Tipo di applicazione, Creazione guidata applicazione MFC. |
Per una descrizione delle alternative alla serializzazione e agli usi alternativi per la serializzazione, vedere Serializzazione: Serializzazione e input/output del database.
Applicazioni con documenti minimi
La Creazione guidata applicazione MFC include due opzioni che supportano applicazioni di accesso ai dati basate su form. Ogni opzione crea una CRecordView
classe di visualizzazione derivata da e un documento. Differiscono in base a ciò che lasciano fuori dal documento.
Documento senza supporto file
Selezionare l'opzione database della procedura guidata dell'applicazione Visualizzazione database senza supporto file se non è necessaria la serializzazione dei documenti. Il documento serve ai seguenti scopi utili:
È un luogo comodo per archiviare un
CRecordset
oggetto.Questo utilizzo parallela ai concetti comuni del documento: il documento archivia i dati (o, in questo caso, un set di record) e la visualizzazione è una visualizzazione del documento.
Se l'applicazione presenta più visualizzazioni, ad esempio più visualizzazioni di record, un documento supporta il coordinamento delle visualizzazioni.
Se più visualizzazioni mostrano gli stessi dati, è possibile usare la
CDocument::UpdateAllViews
funzione membro per coordinare gli aggiornamenti a tutte le visualizzazioni quando una visualizzazione modifica i dati.
Questa opzione viene in genere usata per semplici applicazioni basate su form. La procedura guidata dell'applicazione supporta automaticamente una struttura pratica per tali applicazioni.
Documento con supporto file
Selezionare l'opzione database della procedura guidata dell'applicazione Visualizzazione database con supporto file quando si dispone di un uso alternativo per i comandi di menu File correlati al documento e serializzazione dei documenti. Per la parte relativa all'accesso ai dati del programma, è possibile usare il documento nello stesso modo descritto in Documento senza supporto file. È possibile utilizzare la funzionalità di serializzazione del documento, ad esempio, per leggere e scrivere un documento del profilo utente serializzato che archivia le preferenze dell'utente o altre informazioni utili. Per altre idee, vedere Serializzazione: serializzazione e input/output del database.
La procedura guidata dell'applicazione supporta questa opzione, ma è necessario scrivere il codice che serializza il documento. Archiviare le informazioni serializzate nei membri dati del documento.
Applicazioni senza documento
A volte potrebbe essere necessario scrivere un'applicazione che non usa documenti o visualizzazioni. Senza documenti, si archiviano i dati , ad esempio un CRecordset
oggetto , nella classe finestra cornice o nella classe dell'applicazione. Eventuali requisiti aggiuntivi dipendono dal fatto che l'applicazione presenti un'interfaccia utente.
Supporto del database con un'interfaccia utente
Se si dispone di un'interfaccia utente (ad esempio, un'interfaccia della riga di comando della console), l'applicazione disegna direttamente nell'area client della finestra cornice anziché in una visualizzazione. Tale applicazione non usa CRecordView
, CFormView
o CDialog
per l'interfaccia utente principale, ma in genere viene usata CDialog
per i dialoghi ordinari.
Scrittura di applicazioni senza documenti
Poiché la procedura guidata dell'applicazione non supporta la creazione di applicazioni senza documenti, è necessario scrivere la propria CWinApp
classe derivata e, se necessario, creare anche una CFrameWnd
classe o CMDIFrameWnd
. Eseguire l'override CWinApp::InitInstance
e dichiarare un oggetto applicazione come:
CYourNameApp theApp;
Il framework fornisce ancora il meccanismo di mapping dei messaggi e molte altre funzionalità.
Supporto del database separato dall'interfaccia utente
Alcune applicazioni non richiedono un'interfaccia utente o solo una minima. Si supponga, ad esempio, di scrivere:
Oggetto di accesso ai dati intermedio che altre applicazioni (client) chiamano per un'elaborazione speciale dei dati tra l'applicazione e l'origine dati.
Applicazione che elabora i dati senza intervento dell'utente, ad esempio un'applicazione che sposta i dati da un formato di database a un altro o che esegue calcoli ed esegue aggiornamenti batch.
Poiché nessun documento è proprietario dell'oggetto CRecordset
, è probabile che si voglia archiviarlo come membro dati incorporato nella CWinApp
classe dell'applicazione derivata da . Le alternative includono:
Non mantenere affatto un oggetto permanente
CRecordset
. È possibile passare NULL ai costruttori della classe recordset. In tal caso, il framework crea un oggetto temporaneoCDatabase
usando le informazioni nella funzione membro delGetDefaultConnect
recordset. Questo è l'approccio alternativo più probabile.Creazione di una variabile globale dell'oggetto
CRecordset
. Questa variabile deve essere un puntatore a un oggetto recordset creato dinamicamente nell'overrideCWinApp::InitInstance
. In questo modo si evita di tentare di costruire l'oggetto prima dell'inizializzazione del framework.Utilizzo di oggetti recordset come si farebbe all'interno del contesto di un documento o di una vista. Creare recordset nelle funzioni membro dell'applicazione o degli oggetti finestra cornice.