Udostępnij za pośrednictwem


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:

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 do CDatabase 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 utworzenia CDatabase 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źnik CDatabase 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 jego Open funkcję składową podczas inicjowania dokumentu. Podczas konstruowania obiektów zestawu rekordów w funkcjach składowych dokumentu wskaźnik jest przekazywany do obiektu dokumentu CDatabase . 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 CFormViewklasy 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.

Zobacz też

Klasy bazy danych MFC