MFC: Použití databázových tříd bez Document a View
Někdy není vhodné používat architekturu dokument/pohled ve vaši databázové aplikaci. Toto téma vysvětluje:
Kdy nepotřebujete používat dokumenty, například u serializace dokumentu.
Možnosti průvodce aplikace pro podporu aplikací bez serializace a bez příkazů nabídky Soubor, které souvisejí s dokumenty, jako například Nový, Otevřít, Uložit a Uložit jako.
Jak pracovat s aplikací, která používá minimální dokument.
Jak strukturovat aplikaci bez dokumentu nebo pohledu.
Kdy nepotřebujete dokumenty
Některé aplikace mají odlišný koncept dokumentu. Tyto aplikace obvykle načtou všechny nebo většinu souborů z úložiště dat do paměťi pomocí příkazu Otevřít soubor. Aktualizovaný soubor poté zapíší zpět do úložiště dat najednou pomocí příkazu Uložit soubor nebo Uložit jako. To, co uživatel vidí, je datový soubor.
Některé kategorie aplikací však nevyžadují dokument. Databázové aplikace pracují v rámci transakcí. Aplikace vybere záznamy z databáze a předloží je uživateli, často postupně. To, co uživatel vidí, je obvykle jeden aktuální záznam, který může být pouze jeden v paměťi.
Pokud vaše aplikace nevyžaduje dokument pro ukládání dat, můžete se obejít bez některých nebo všech architektur dokument/pohled. Kolik závislosti se vzdáte závisí na přístupu, kterému dáváte přednost. Mohli byste:
Použít minimální dokument jako místo pro uložení připojení k vašemu zdroji dat, ale upustit od normálních funkcí dokumentu jako je například serializace. Tato možnost je užitečná pokud chcete mít několik pohledů na data a chcete synchronizovat všechny pohledy, aktualizovat je všechny najednou a podobně.
Použít okno rámce, do kterého kreslíte přímo, nikoli pomocí pohledu. V takovém případě vynecháte dokument a ukládáte jakákoliv data nebo datové připojení do objektu okna rámce.
Možnosti průvodce aplikace pro dokumenty a pohledy
Průvodce aplikace knihovny MFC má několik možností při Výběru podpory databáze, které jsou uvedeny v následující tabulce. Používáte-li průvodce aplikace knihovny MFC, abyste vytvořili aplikaci, všechny tyto možnosti tvoří aplikace s dokumenty a pohledy. Některé možnosti poskytují dokumenty a pohledy, která vynechají nepotřebné funkce dokumentu. Další informace naleznete v tématu Podpora databáze, Průvodce aplikací knihovny MFC.
Parametr |
View |
Dokument |
---|---|---|
Žádné |
Odvozený z CView. |
Neposkytuje žádnou podporu databáze. Jedná se o výchozí nastavení. Pokud vyberete možnost Podpora architektury dokument/pohled na stránce Typ aplikace, Průvodce aplikací knihovny MFC, dostanete úplnou podporu dokumentu včetně serializace a příkazů New, Otevřít, Uložit a Uložit jako v nabídce Soubor. Podívejte se na Aplikace bez dokumentu. |
Pouze soubory hlaviček |
Odvozený z CView. |
Poskytuje základní úroveň podpory databáze pro aplikace. Obsahuje Afxdb.h. Přidá připojené knihovny, ale nevytvoří žádnou specifickou databázovou třídu. Později můžete vytvořit sady záznamů a použít je pro přezkoumání a aktualizaci záznamu. |
Pohled na databázi bez podpory souborů |
Odvozený z CRecordView. |
Poskytuje podporu dokumentu, ale nepodporuje serializaci. Dokument může uložit sadu záznamů a koordinovat více pohledů; nepodporuje serializaci nebo příkazy New, Otevřít, Uložit a Uložit jako. Podívejte se na Aplikace s minimálními dokumenty. Pokud jste zahrnuli databázový pohled, musíte určit zdroj dat. Zahrnuje databázové soubory hlaviček, připojené knihovny, pohled na záznam a sadu záznamů. (K dispozici pouze pro aplikace s možností Podpora architektury dokument/pohled zvolené na stránce Typ aplikace, Průvodce aplikací knihovny MFC). |
Pohled na databázi s podporou souboru |
Odvozený z CRecordView. |
Poskytuje plnou podporu dokumentu včetně serializace a příkazů nabídky Soubor, které souvisejí s dokumenty. Databázové aplikace obvykle pracují spíše po záznamech než po souborech, a tak není nutná serializace. Můžete však mít zvláštní použití pro serializaci. Podívejte se na Aplikace s minimálními dokumenty. Pokud jste zahrnuli databázový pohled, musíte určit zdroj dat. Zahrnuje databázové soubory hlaviček, připojené knihovny, pohled na záznam a sadu záznamů. (K dispozici pouze pro aplikace s možností Podpora architektury dokument/pohled zvolená na stránce Typ aplikace, Průvodce aplikací knihovny MFC). |
Pro diskusi o alternativách k serializaci a alternativách použití serializace se podívejte na Serialization: Serialization vs. Database Input/Output.
Aplikace s minimálními dokumenty.
Průvodce aplikace knihovny MFC má dvě možnosti, které podporují formulářově založené aplikace s přístupem k datům. Každá možnost vytvoří odvozenou třídu pohledu a dokumentu CRecordView. Liší se v tom, co vynechají z dokumentu.
Dokument bez podpory souboru
Vyberte možnost průvodce aplikace databáze Pohled na databázi bez podpory souborů pokud nepotřebujete serializaci dokumentu. Dokument slouží k následujícím účelům:
Je vhodné místo k uložení objektu CRecordset.
Toto využití je paralelní s koncepty běžného dokument: dokument ukládá data (nebo v tomto případě sadu záznamů) a zobrazení je pohled na dokument.
Pokud aplikace představuje více pohledů (například více pohledů na záznam), dokument podporuje koordinaci pohledů.
Ukazuje-li více pohledů na stejná data, můžete použít členskou funkci CDocument::UpdateAllViews, abyste koordinovali aktualizace pro všechny pohledy pokud libovolný pohled změní data.
Obvykle použijete tuto možnost pro jednoduché formulářové aplikace. Průvodce aplikace podporuje vhodnou strukturu pro tyto aplikace automaticky.
Dokument s podporou souboru
Vyberte možnost průvodce aplikace databáze Pohled na databázi s podporou souboru, pokud máte alternativní použití pro příkazy nabídky Soubor, které souvisejí s dokumenty, a serializaci dokumentu. Pro část programu s přístupem k datům můžete použít dokument stejným způsobem, jako je popsaný v Dokument bez podpory souboru. Můžete použít funkci serializace dokumentu například ke čtení a zapisování serializovaného profilu uživatele dokumentu, který ukládá uživatelské předvolby nebo další užitečné informace. Další nápady naleznete v Serialization: Serialization vs. Database Input/Output.
Průvodce aplikace podporuje tuto možnost, ale musíte zapsat kód, který serializuje dokument. Uložte serializované informace v datových členech dokumentu.
Aplikace bez dokumentu.
Někdy můžete chtít psát aplikace, která nepoužívají dokumenty nebo pohledy. Bez použití dokumentů ukládáte data (například objekt CRecordset) ve třídě okna rámce nebo ve třídě aplikace. Všechny další požadavky závisí na tom, zda aplikace prezentuje uživatelské rozhraní.
Podpora databáze s uživatelským rozhraním
Pokud máte uživatelské rozhraní (například jiné než konzolové rozhraní příkazového řádku), aplikace přímo kreslí do klientské oblasti v okně rámce spíše než do pohledu. Taková aplikace nepoužívá CRecordView, CFormView nebo CDialog pro jeho hlavní uživatelské rozhraní, ale normálně používá CDialog pro běžná dialogová okna.
Psaní aplikací bez dokumentů
Jelikož průvodce aplikace nepodporuje vytváření aplikací bez dokumentů, musíte napsat vlastní odvozenou třídu CWinApp a v případě potřeby také vytvořit třídu CFrameWnd nebo CMDIFrameWnd. Přepsat CWinApp::InitInstance a deklarovat objekt aplikace jako:
CYourNameApp theApp;
Vývojový rámec stále poskytuje mapový mechanismus zpráv a mnoho dalších funkcí.
Podpora databáze oddělená od uživatelského rozhraní
Některé aplikace nepotřebují uživatelské rozhraní nebo pouze minimální. Předpokládejme například, že vytváříte:
Zprostředkovaný objekt pro přístup k datům, který volají ostatní aplikace (klientů) pro zvláštní zpracování dat mezi aplikací a zdrojem dat.
Aplikaci, která zpracovává data bez zásahu uživatele, jako je například aplikace, která přesune data z jednoho formátu databáze do jiného, nebo aplikace, která provede výpočty a provádí dávkové aktualizace.
Protože žádný dokument nevlastní objekt CRecordset nebo CDaoRecordset, budete jej pravděpodobně chtít uložit jako vložený datový člen v odvozené třídě aplikace CWinApp. K alternativám patří:
Neuchování trvalého objektu CRecordset nebo CDaoRecordset. Můžete předat hodnotu NULL konstruktorům třídy sady záznamů. V takovém případě vývojový rámec vytvoří dočasný objekt CDatabase nebo CDaoDatabase pomocí informací v členské funkci sady záznamů GetDefaultConnect. Toto je nejpravděpodobnější alternativní přístup.
Změna objektu CRecordset nebo CDaoRecordset na globální proměnnou. Tato proměnná by měla být ukazatel na objekt sady záznamů, který vytvoříte dynamicky ve vaší přepsané CWinApp::InitInstance. Tím je zabráněno pokusu o sestavení objektu před tím, než je vývojový rámec inicializován.
Použití objektů sady záznamů je stejné, jako byste byli v rámci kontextu dokumentu nebo pohledu. Vytváření sad záznamů v členských funkcích aplikace nebo v objektu okna rámce.