Sdílet prostřednictvím


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 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
Nezaokrouhlovat 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 CRecordViewzobrazení 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, CFormViewnebo 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í CWinAppodvozenou 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ší CWinApptří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 sady GetDefaultConnect 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 dynamicky CWinApp::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.

Viz také

MFC – databázové třídy