MFC: używanie klas baz danych bez dokumentów i widoków
Czasami możesz nie chcieć użyć architektury dokumentu/widoku platformy w aplikacjach bazy danych. W tym temacie opisano:
Jeśli nie musisz używać dokumentów , takich jak serializacja dokumentów.
Opcje kreatora aplikacji do obsługi aplikacji bez serializacji i bez poleceń menu plik związanych z dokumentami, takich jak Nowe, Otwórz, Zapisz i Zapisz jako.
Jak pracować z aplikacją korzystającą z minimalnego dokumentu.
Gdy nie potrzebujesz dokumentów
Niektóre aplikacje mają odrębną koncepcję dokumentu. Te aplikacje zwykle ładują wszystkie lub większość plików z magazynu do pamięci za pomocą polecenia Otwórz plik. Zapisują zaktualizowany plik z powrotem do magazynu jednocześnie za pomocą polecenia Zapisz lub Zapisz jako . To, co widzi użytkownik, to plik danych.
Niektóre kategorie aplikacji nie wymagają jednak dokumentu. Aplikacje bazy danych działają pod względem transakcji. Aplikacja wybiera rekordy z bazy danych i prezentuje je użytkownikowi, często pojedynczo. To, co użytkownik widzi, jest zwykle pojedynczym bieżącym rekordem, który może być jedynym rekordem w pamięci.
Jeśli aplikacja nie wymaga dokumentu do przechowywania danych, możesz zrezygnować z niektórych lub wszystkich architektur dokumentów/widoków platformy. Ile rezygnujesz, zależy od preferowanego podejścia. Możesz:
Użyj minimalnego dokumentu jako miejsca do przechowywania połączenia ze źródłem danych, ale zrezygnować z normalnych funkcji dokumentów, takich jak serializacja. Jest to przydatne, gdy potrzebujesz kilku widoków danych i chcesz zsynchronizować wszystkie widoki, aktualizując je wszystkie jednocześnie i tak dalej.
Użyj okna ramowego, w którym rysujesz bezpośrednio, zamiast korzystać z widoku. W takim przypadku pominiesz dokument i zapiszesz wszystkie połączenia danych lub danych w obiekcie okna ramowego.
Opcje kreatora aplikacji dla dokumentów i widoków
Kreator aplikacji MFC ma kilka opcji w sekcji Wybieranie obsługi bazy danych, które są wymienione w poniższej tabeli. Jeśli używasz Kreatora aplikacji MFC do utworzenia aplikacji, wszystkie te opcje tworzą aplikacje z dokumentami i widokami. Niektóre opcje udostępniają dokumenty i widoki, które pomijają niepotrzebne funkcje dokumentu. Aby uzyskać więcej informacji, zobacz Obsługa bazy danych, Kreator aplikacji MFC.
Opcja | Widok | Dokument |
---|---|---|
Brak | Pochodzi z .CView |
Nie zapewnia obsługi bazy danych. Jest to domyślne ustawienie opcji. Jeśli wybierzesz opcję Obsługa architektury dokumentu/widoku na stronie Typ aplikacji, Kreator aplikacji MFC, uzyskasz pełną obsługę dokumentów, w tym serializacji i nowych, Otwórz, Zapisz i Zapisz jako w menu Plik. Zobacz Aplikacje bez dokumentu. |
Tylko pliki nagłówka | Pochodzi z .CView |
Zapewnia podstawowy poziom obsługi bazy danych dla aplikacji. Zawiera plik Afxdb.h. Dodaje biblioteki łączy, ale nie tworzy żadnych klas specyficznych dla bazy danych. Zestawy rekordów można tworzyć później i używać ich do badania i aktualizowania rekordów. |
Widok bazy danych bez obsługi plików | Pochodzi z CRecordView |
Zapewnia obsługę dokumentów, ale nie obsługuje serializacji. Dokument może przechowywać zestaw rekordów i koordynować wiele widoków; nie obsługuje serializacji ani poleceń New, Open, Save i Save As . Zobacz Aplikacje z minimalnymi dokumentami. Jeśli uwzględnisz widok bazy danych, musisz określić źródło danych. Zawiera pliki nagłówka bazy danych, biblioteki łączy, widok rekordu i zestaw rekordów. (Dostępne tylko dla aplikacji z Opcja obsługi architektury dokumentu/widoku wybrana na stronie Typ aplikacji, Kreator aplikacji MFC). |
Widok bazy danych z obsługą plików | Pochodzi z CRecordView |
Zapewnia pełną obsługę dokumentów, w tym serializację i polecenia menu Plik związane z dokumentami. Aplikacje bazy danych zwykle działają na podstawie poszczególnych rekordów, a nie na podstawie poszczególnych plików i nie wymagają serializacji. Jednak może istnieć specjalne zastosowanie do serializacji. Zobacz Aplikacje z minimalnymi dokumentami. Jeśli uwzględnisz widok bazy danych, musisz określić źródło danych. Zawiera pliki nagłówka bazy danych, biblioteki łączy, widok rekordu i zestaw rekordów. (Dostępne tylko dla aplikacji z Opcja obsługi architektury dokumentu/widoku wybrana na stronie Typ aplikacji, Kreator aplikacji MFC). |
Aby zapoznać się z omówieniem alternatywnych metod serializacji i alternatywnych zastosowań serializacji, zobacz Serializacja: serializacja a dane wejściowe/wyjściowe bazy danych.
Aplikacje z minimalnymi dokumentami
Kreator aplikacji MFC ma dwie opcje, które obsługują aplikacje dostępu do danych oparte na formularzach. Każda opcja tworzy klasę widoku pochodnego CRecordView
i dokument. Różnią się one tym, co opuszczają dokument.
Dokument bez obsługi plików
Wybierz opcję Baza danych kreatora aplikacji Widok bazy danych bez obsługi plików, jeśli nie potrzebujesz serializacji dokumentów. Dokument służy do następujących przydatnych celów:
Jest to wygodne miejsce do przechowywania
CRecordset
obiektu.To użycie jest równoległe dla zwykłych pojęć dokumentów: dokument przechowuje dane (lub w tym przypadku zestaw rekordów), a widok jest widokiem dokumentu.
Jeśli aplikacja przedstawia wiele widoków (takich jak wiele widoków rekordów), dokument obsługuje koordynowanie widoków.
Jeśli wiele widoków wyświetla te same dane, możesz użyć funkcji składowej
CDocument::UpdateAllViews
, aby koordynować aktualizacje wszystkich widoków, gdy dowolny widok zmienia dane.
Ta opcja jest zwykle używana w przypadku prostych aplikacji opartych na formularzach. Kreator aplikacji obsługuje wygodną strukturę dla takich aplikacji automatycznie.
Dokument z obsługą plików
Wybierz opcję Baza danych kreatora aplikacji Widok bazy danych z obsługą plików, jeśli masz alternatywne użycie poleceń menu plik powiązanych z dokumentami i serializacji dokumentów. W przypadku części programu z dostępem do danych możesz użyć dokumentu w taki sam sposób, jak opisano w dokumencie bez obsługi plików. Można użyć możliwości serializacji dokumentu, na przykład do odczytywania i zapisywania serializowanego dokumentu profilu użytkownika, który przechowuje preferencje użytkownika lub inne przydatne informacje. Aby uzyskać więcej pomysłów, zobacz Serializacja: serializacja a dane wejściowe/wyjściowe bazy danych.
Kreator aplikacji obsługuje tę opcję, ale musisz napisać kod, który serializuje dokument. Przechowuj serializowane informacje w elementach członkowskich danych dokumentu.
Aplikacje bez dokumentu
Czasami może być konieczne napisanie aplikacji, która nie korzysta z dokumentów ani widoków. Bez dokumentów dane (takie jak CRecordset
obiekt) są przechowywane w klasie okna ramowego lub w klasie aplikacji. Wszelkie dodatkowe wymagania zależą od tego, czy aplikacja prezentuje interfejs użytkownika.
Obsługa bazy danych za pomocą interfejsu użytkownika
Jeśli masz interfejs użytkownika (inny niż na przykład interfejs wiersza polecenia konsoli), aplikacja pobiera bezpośrednio do obszaru klienta okna ramowego, a nie do widoku. Taka aplikacja nie używa metody CRecordView
, CFormView
ani CDialog
dla głównego interfejsu użytkownika, ale zwykle jest używana CDialog
w zwykłych oknach dialogowych.
Pisanie aplikacji bez dokumentów
Ponieważ kreator aplikacji nie obsługuje tworzenia aplikacji bez dokumentów, musisz napisać własną CWinApp
klasę pochodną i w razie potrzeby utworzyć klasę CFrameWnd
lub CMDIFrameWnd
. Zastąpij i zadeklaruj CWinApp::InitInstance
obiekt aplikacji jako:
CYourNameApp theApp;
Struktura nadal dostarcza mechanizm mapy komunikatów i wiele innych funkcji.
Obsługa bazy danych niezależnie od interfejsu użytkownika
Niektóre aplikacje nie potrzebują interfejsu użytkownika ani tylko minimalnej. Załóżmy na przykład, że piszesz:
Pośredni obiekt dostępu do danych, który inne aplikacje (klienci) wywołają specjalne przetwarzanie danych między aplikacją a źródłem danych.
Aplikacja, która przetwarza dane bez interwencji użytkownika, na przykład aplikacja, która przenosi dane z jednego formatu bazy danych do innego lub wykonuje obliczenia i wykonuje aktualizacje wsadowe.
Ponieważ żaden dokument nie jest właścicielem CRecordset
obiektu, prawdopodobnie chcesz przechowywać go jako osadzony element członkowski danych w CWinApp
klasie -pochodnej aplikacji. Alternatywy obejmują:
Nie należy w ogóle utrzymywać obiektu trwałego
CRecordset
. Wartość NULL można przekazać do konstruktorów klas zestawu rekordów. W takim przypadku struktura tworzy obiekt tymczasowyCDatabase
przy użyciu informacji w funkcji składowejGetDefaultConnect
zestawu rekordów. Jest to najbardziej prawdopodobne alternatywne podejście.CRecordset
Tworzenie obiektu jako zmiennej globalnej. Ta zmienna powinna być wskaźnikiem do obiektu zestawu rekordów tworzonego dynamicznie wCWinApp::InitInstance
zastąpień. Pozwala to uniknąć próby skonstruowania obiektu przed zainicjowaniem struktury.Używanie obiektów zestawu rekordów tak, jak w kontekście dokumentu lub widoku. Utwórz zestawy rekordów w funkcjach członkowskich obiektów aplikacji lub okien ramowych.