MFC: Použití databázových tříd bez objektů Document a View
Někdy možná nebudete chtít v databázových aplikacích používat architekturu dokumentů a zobrazení. Toto téma vysvětluje:
Pokud nepotřebujete používat dokumenty , jako je serializace dokumentů.
Možnosti průvodce aplikací pro podporu aplikací bez serializace a bez příkazů nabídky Soubor souvisejících s dokumentem, jako jsou příkazy nabídky Nový, Otevřít, Uložit a Uložit jako.
Pokud nepotřebujete dokumenty
Některé aplikace mají jedinečný koncept dokumentu. Tyto aplikace obvykle načítají všechny nebo většinu souboru z úložiště do paměti pomocí příkazu Otevřít soubor. Aktualizovaný soubor zapisují zpátky do úložiště najednou pomocí příkazu Uložit soubor nebo Uložit jako . To, co uživatel uvidí, je datový soubor.
Některé kategorie aplikací však nevyžadují dokument. Databázové aplikace fungují z hlediska transakcí. Aplikace vybírá záznamy z databáze a prezentuje je uživateli, často po jednom. Uživatel vidí obvykle jeden aktuální záznam, což může být jediný záznam v paměti.
Pokud vaše aplikace nevyžaduje dokument pro ukládání dat, můžete použít některou nebo celou architekturu dokumentu/zobrazení architektury. Kolik dáte, závisí na tom, jaký přístup dáváte přednost. Můžete:
Použijte minimální dokument jako místo k uložení připojení ke zdroji dat, ale používejte normální funkce dokumentu, jako je serializace. To je užitečné, když chcete mít několik zobrazení dat a chcete synchronizovat všechna zobrazení, aktualizovat je najednou a tak dále.
Místo zobrazení použijte okno rámečku, do kterého kreslete přímo. V tomto případě dokument vynecháte a uložíte všechna data nebo datová připojení do objektu okna rámečku.
Možnosti Průvodce aplikací pro dokumenty a zobrazení
Průvodce aplikací MFC obsahuje několik možností v podpoře výběrové databáze, které jsou uvedeny v následující tabulce. Pokud k vytvoření aplikace použijete Průvodce aplikací MFC, všechny tyto možnosti vytvářejí aplikace s dokumenty a zobrazeními. Některé možnosti poskytují dokumenty a zobrazení, které vynechat nepotřebné funkce dokumentu. Další informace naleznete v tématu Podpora databáze, Průvodce aplikací MFC.
Možnost | Zobrazení | Dokument |
---|---|---|
Nic | Odvozeno od CView . |
Neposkytuje žádnou podporu databáze. Toto je výchozí možnost. Pokud vyberete možnost Podpora architektury dokumentu/zobrazení na stránce Typ aplikace, Průvodce aplikací MFC, získáte úplnou podporu dokumentů, včetně serializace a nové, Otevřít, Uložit a Uložit jako v nabídce Soubor . Viz aplikace bez dokumentu. |
Pouze soubory hlaviček | Odvozeno od CView . |
Poskytuje základní úroveň podpory databáze pro vaši aplikaci. Obsahuje Afxdb.h. Přidá knihovny propojení, ale nevytváří žádné třídy specifické pro databázi. Sady záznamů můžete vytvořit později a použít je k prozkoumání a aktualizaci záznamů. |
Zobrazení databáze bez podpory souborů | Odvozeno z CRecordView |
Poskytuje podporu dokumentů, ale nepodporuje serializaci. Dokument může ukládat sadu záznamů a koordinovat více zobrazení; nepodporuje serializaci ani příkazy Nový, Otevřít, Uložit a Uložit jako . Viz aplikace s minimálními dokumenty. Pokud zahrnete zobrazení databáze, musíte zadat zdroj dat. Zahrnuje soubory hlaviček databáze, knihovny propojení, zobrazení záznamů a sadu záznamů. (K dispozici pouze pro aplikace s Podpora architektury dokumentu nebo zobrazení vybraná na stránce Průvodce aplikací MFC. |
Zobrazení databáze s podporou souborů | Odvozeno z CRecordView |
Poskytuje úplnou podporu dokumentů, včetně serializace a příkazů nabídky Soubor souvisejících s dokumentem. Databázové aplikace obvykle pracují na základě jednotlivých záznamů, nikoli na základě jednotlivých souborů, a proto nepotřebují serializaci. Můžete však použít speciální použití pro serializaci. Viz aplikace s minimálními dokumenty. Pokud zahrnete zobrazení databáze, musíte zadat zdroj dat. Zahrnuje soubory hlaviček databáze, knihovny propojení, zobrazení záznamů a sadu záznamů. (K dispozici pouze pro aplikace s Podpora architektury dokumentu nebo zobrazení vybraná na stránce Průvodce aplikací MFC. |
Diskuzi o alternativách serializace a alternativní použití serializace naleznete v tématu Serializace: Serializace vs. Vstup/výstup databáze.
Aplikace s minimálními dokumenty
Průvodce aplikací MFC má dvě možnosti, které podporují aplikace pro přístup k datům založeným na formulářích. Každá možnost vytvoří třídu odvozeného CRecordView
zobrazení a dokument. Liší se v tom, co z dokumentu vynechají.
Dokument bez podpory souborů
Pokud nepotřebujete serializaci dokumentů, vyberte možnost Databáze průvodce aplikací zobrazení Databáze bez podpory souborů. Dokument slouží k následujícím užitečným účelům:
Je to vhodné místo pro uložení objektu
CRecordset
.Toto použití paralelně popisuje běžné koncepty dokumentů: dokument ukládá data (v tomto případě sadu záznamů) a zobrazení je zobrazením dokumentu.
Pokud vaše aplikace prezentuje více zobrazení (například zobrazení s více záznamy), dokument podporuje koordinaci zobrazení.
Pokud více zobrazení zobrazuje stejná data, můžete pomocí
CDocument::UpdateAllViews
členské funkce koordinovat aktualizace všech zobrazení, když jakékoli zobrazení změní data.
Tuto možnost obvykle používáte pro jednoduché formulářové aplikace. Průvodce aplikací podporuje pohodlnou strukturu pro takové aplikace automaticky.
Dokument s podporou souborů
Pokud máte alternativu pro příkazy nabídky Soubor související s dokumentem a serializaci dokumentů, vyberte možnost Databáze s podporou souborů s podporou souborů. Pro část programu pro přístup k datům můžete dokument použít stejným způsobem, jak je popsáno v dokumentu bez podpory souborů. Pomocí funkce serializace dokumentu můžete například číst a zapisovat serializovaný dokument profilu uživatele, který ukládá předvolby uživatele nebo jiné užitečné informace. Další nápady najdete v tématu Serializace: Serializace vs. Vstup/výstup databáze.
Průvodce aplikací tuto možnost podporuje, ale musíte napsat kód, který serializuje dokument. Uložte serializované informace do datových členů dokumentu.
Aplikace bez dokumentu
Někdy můžete chtít napsat aplikaci, která nepoužívá dokumenty nebo zobrazení. Bez dokumentů ukládáte data (například objekt) do třídy okna rámečku CRecordset
nebo třídy aplikace. Jakékoli další požadavky závisí na tom, jestli aplikace prezentuje uživatelské rozhraní.
Podpora databáze s uživatelským rozhraním
Pokud máte uživatelské rozhraní (jiné než například rozhraní příkazového řádku konzoly), aplikace místo zobrazení přímo nakreslí do klientské oblasti okna rámce. Taková aplikace nepoužívá CRecordView
, CFormView
nebo CDialog
pro jeho hlavní uživatelské rozhraní, ale obvykle se používá CDialog
pro běžné dialogy.
Psaní aplikací bez dokumentů
Protože průvodce aplikací nepodporuje vytváření aplikací bez dokumentů, musíte napsat vlastní CWinApp
odvozenou třídu a v případě potřeby také vytvořit CFrameWnd
nebo CMDIFrameWnd
třídu. Přepsat a deklarovat CWinApp::InitInstance
objekt aplikace jako:
CYourNameApp theApp;
Architektura stále poskytuje mechanismus mapování zpráv a mnoho dalších funkcí.
Podpora databáze odděleně od uživatelského rozhraní
Některé aplikace nepotřebují žádné uživatelské rozhraní nebo jenom minimální uživatelské rozhraní. Předpokládejme například, že píšete:
Zprostředkující objekt pro přístup k datům, který ostatní aplikace (klienti) volají ke speciálnímu zpracování dat mezi aplikací a zdrojem dat.
Aplikace, která zpracovává data bez zásahu uživatele, například aplikace, která přesouvá data z jednoho databázového formátu do jiného nebo aplikace, která provádí výpočty a provádí dávkové aktualizace.
Vzhledem k tomu, že žádný dokument objekt nevlastní CRecordset
, pravděpodobně ho chcete uložit jako vložený datový člen do třídy aplikace odvozené od vaší CWinApp
třídy aplikace. Mezi alternativy patří:
Neudržuje vůbec trvalý
CRecordset
objekt. Konstruktory tříd sady záznamů můžete předat null. V takovém případě architektura vytvoří dočasnýCDatabase
objekt pomocí informací v členské funkci sadyGetDefaultConnect
záznamů. Toto je nejpravděpodobnější alternativní přístup.Vytvoření objektu
CRecordset
jako globální proměnné Tato proměnná by měla být ukazatelem na objekt sady záznamů, který v přepsání vytváříte dynamickyCWinApp::InitInstance
. Tím se zabrání pokusu o vytvoření objektu před inicializováním architektury.Objekty sady záznamů používáte stejně jako v kontextu dokumentu nebo zobrazení. Vytvořte sady záznamů v členských funkcích vaší aplikace nebo objektů oken s rámečkem.