MFC: używanie klas baz danych z dokumentami i widokami
Klasy baz danych MFC można używać z architekturą dokumentu/widoku lub bez niego. W tym temacie kładzie się nacisk na pracę z dokumentami i widokami. Wyjaśniono w nim:
Jak napisać aplikację opartą
CRecordView
na formularzach przy użyciu obiektu jako głównego widoku dokumentu.Jak używać obiektów zestawu rekordów w dokumentach i widokach.
Aby uzyskać alternatywy, zobacz MFC: używanie klas baz danych bez dokumentów i widoków.
Pisanie aplikacji opartej na formularzach
Wiele aplikacji dostępu do danych jest opartych na formularzach. Interfejs użytkownika to formularz zawierający kontrolki, w których użytkownik sprawdza, wprowadza lub edytuje dane. Aby utworzyć formularz aplikacji na podstawie, użyj klasy CRecordView
. Po uruchomieniu Kreatora aplikacji MFC i wybraniu typu klienta ODBC na stronie Obsługa bazy danych projekt będzie używany CRecordView
dla klasy widoków.
W aplikacji opartej na formularzach każdy obiekt widoku rekordów przechowuje wskaźnik do CRecordset
obiektu. Mechanizm wymiany pól rekordów (RFX) platformy wymienia dane między zestawem rekordów a źródłem danych. Mechanizm wymiany danych dialogowych (DDX) wymienia dane między elementami członkowskimi danych pola obiektu zestawu rekordów i kontrolkami w formularzu. CRecordView
Udostępnia również domyślne funkcje obsługi poleceń umożliwiające nawigowanie z rekordu do rekordu w formularzu.
Aby utworzyć aplikację opartą na formularzach za pomocą kreatora aplikacji, zobacz Tworzenie aplikacji MFC opartej na formularzach i obsługi bazy danych, Kreator aplikacji MFC.
Aby zapoznać się z pełną dyskusją na temat formularzy, zobacz Record Views (Widoki rekordów).
Używanie zestawów rekordów w dokumentach i widokach
Wiele prostych aplikacji opartych na formularzach nie wymaga dokumentów. Jeśli aplikacja jest bardziej złożona, prawdopodobnie chcesz użyć dokumentu jako serwera proxy dla bazy danych, przechowując CDatabase
obiekt łączący się ze źródłem danych. Aplikacje oparte na formularzach zwykle przechowują wskaźnik do obiektu zestawu rekordów w widoku. Inne rodzaje aplikacji baz danych przechowują zestawy rekordów i CDatabase
obiekty w dokumencie. Poniżej przedstawiono kilka możliwości korzystania z dokumentów w aplikacjach bazy danych:
Jeśli uzyskujesz dostęp do zestawu rekordów w kontekście lokalnym, utwórz
CRecordset
obiekt lokalnie w funkcjach członkowskich dokumentu lub widoku zgodnie z potrzebami.Zadeklaruj obiekt zestawu rekordów jako zmienną lokalną w funkcji. Przekaż wartość NULL do konstruktora, co powoduje utworzenie i otwarcie obiektu tymczasowego
CDatabase
przez platformę. Alternatywnie przekaż wskaźnik doCDatabase
obiektu. Użyj zestawu rekordów w funkcji i pozwól, że zostanie ona zniszczona automatycznie po zakończeniu działania funkcji.Po przekazaniu wartości NULL do konstruktora zestawu rekordów platforma używa informacji zwracanych przez funkcję składową zestawu
GetDefaultConnect
rekordów w celu utworzeniaCDatabase
obiektu i otwarcia go. Kreatory implementująGetDefaultConnect
dla Ciebie.Jeśli uzyskujesz dostęp do zestawu rekordów w okresie istnienia dokumentu, osadź co najmniej jeden
CRecordset
obiekt w dokumencie.Skonstruuj obiekty zestawu rekordów podczas inicjowania dokumentu lub zgodnie z potrzebami. Możesz napisać funkcję, która zwraca wskaźnik do zestawu rekordów, jeśli już istnieje lub tworzy i otwiera zestaw rekordów, jeśli jeszcze nie istnieje. Zamknij, usuń i utwórz ponownie zestaw rekordów zgodnie z potrzebami lub wywołaj funkcję
Requery
składową, aby odświeżyć rekordy.Jeśli uzyskujesz dostęp do źródła danych w okresie istnienia dokumentu, osadź
CDatabase
obiekt lub zapisz wskaźnikCDatabase
do obiektu w nim.Obiekt
CDatabase
zarządza połączeniem ze źródłem danych. Obiekt jest konstruowany automatycznie podczas konstruowania dokumentu i wywołujesz jegoOpen
funkcję składową podczas inicjowania dokumentu. Podczas konstruowania obiektów zestawu rekordów w funkcjach składowych dokumentu wskaźnik jest przekazywany do obiektu dokumentuCDatabase
. Powoduje to skojarzenie każdego zestawu rekordów ze źródłem danych. Obiekt bazy danych jest zwykle niszczony po zamknięciu dokumentu. Obiekty zestawu rekordów są zwykle niszczone po wyjściu z zakresu funkcji.
Inne czynniki
Aplikacje oparte na formularzach często nie mają żadnego użycia dla mechanizmu serializacji dokumentów platformy, więc możesz usunąć, wyłączyć lub zastąpić polecenia Nowe i Otwarte w menu Plik . Zobacz artykuł Serializacja: serializacja a dane wejściowe/wyjściowe bazy danych.
Możesz również skorzystać z wielu możliwości interfejsu użytkownika, które może obsługiwać platforma. Można na przykład użyć wielu CRecordView
obiektów w oknie rozdzielacza, otworzyć wiele zestawów rekordów w różnych oknach podrzędnych interfejsu dokumentu (MDI) itd.
Możesz zaimplementować drukowanie dowolnego elementu w widoku, niezależnie od tego, czy jest to formularz zaimplementowany za pomocą CRecordView
lub coś innego. Jako klasy pochodzące z CFormView
klasy CRecordView
nie obsługują drukowania, ale można zastąpić OnPrint
funkcję składową, aby umożliwić drukowanie. Aby uzyskać więcej informacji, zobacz klasa CFormView.
W ogóle nie chcesz używać dokumentów i widoków. W takim przypadku zobacz MFC: Używanie klas baz danych bez dokumentów i widoków.