Zestaw rekordów: jak zestawy rekordów pobierają rekordy (ODBC)

Uwaga

Kreator klienta MFC ODBC nie jest dostępny w programie Visual Studio 2019 i nowszych wersjach. Nadal można ręcznie utworzyć użytkownika.

Ten temat dotyczy klas MFC ODBC.

W tym temacie opisano:

Zestawy rekordów wybierają rekordy ze źródła danych za pośrednictwem sterownika ODBC, wysyłając instrukcje SQL do sterownika. Wysłane dane SQL zależą od sposobu projektowania i otwierania klasy zestawu rekordów.

Opcje wybierania rekordów

W poniższej tabeli przedstawiono opcje wybierania rekordów.

Jak i kiedy można wpłynąć na zestaw rekordów

Kiedy Można
Deklarowanie klasy zestawu rekordów za pomocą Kreatora dodawania klasy Określ tabelę do wyboru.

Określ kolumny do uwzględnienia.

Zobacz Dodawanie użytkownika MFC ODBC.
Ukończ implementację klas zestawu rekordów Zastąpij funkcje składowe, takie jak OnSetOptions (zaawansowane), aby ustawić opcje specyficzne dla aplikacji lub zmienić ustawienia domyślne. Określ składowe danych parametrów, jeśli chcesz sparametryzowany zestaw rekordów.
Konstruowanie obiektu zestawu rekordów (przed wywołaniem Openmetody ) Określ warunek wyszukiwania (prawdopodobnie złożony) do użycia w klauzuli WHERE , która filtruje rekordy. Zobacz Zestaw rekordów: filtrowanie rekordów (ODBC).

Określ kolejność sortowania do użycia w klauzuli ORDER BY , która sortuje rekordy. Zobacz Zestaw rekordów: sortowanie rekordów (ODBC).

Określ wartości parametrów dla wszystkich parametrów dodanych do klasy. Zobacz Zestaw rekordów: parametryzacja zestawu rekordów (ODBC).

|Uruchom zapytanie zestawu rekordów, wywołując polecenie Open|Określ niestandardowy ciąg SQL, aby zastąpić domyślny ciąg SQL skonfigurowany przez kreatora. Zobacz CRecordset::Open w dokumentacji biblioteki klas i SQL: Dostosowywanie instrukcji SQL zestawu rekordów (ODBC).|

|Wywołanie Requery metody ponownej kwerendy zestawu rekordów przy użyciu najnowszych wartości w źródle danych|Określ nowe parametry, filtr lub sortowanie. Zobacz Zestaw rekordów: Ponowne kolejkowanie zestawu rekordów (ODBC).|

Jak zestaw rekordów konstruuje instrukcję SQL

Podczas wywoływania funkcji Open elementu członkowskiego Open obiektu zestawu rekordów tworzy instrukcję SQL przy użyciu niektórych lub wszystkich następujących składników:

  • Parametr lpszSQL przekazany do Open. Jeśli nie ma wartości NULL, ten parametr określa niestandardowy ciąg SQL lub część. Struktura analizuje ciąg. Jeśli ciąg jest instrukcją SQL SELECT lub instrukcją ODBC CALL , struktura używa ciągu jako instrukcji SQL zestawu rekordów. Jeśli ciąg nie rozpoczyna się od ciągu "SELECT" lub "{CALL", struktura używa elementów dostarczanych do konstruowania klauzuli SQL FROM .

  • Ciąg zwrócony przez polecenie GetDefaultSQL. Domyślnie jest to nazwa tabeli określonej dla zestawu rekordów w kreatorze, ale można zmienić zwracaną funkcję. Wywołania GetDefaultSQL struktury — jeśli ciąg nie zaczyna się od ciągu "SELECT" lub "{CALL", przyjmuje się, że jest to nazwa tabeli, która jest używana do konstruowania ciągu SQL.

  • Składowe danych pola zestawu rekordów, które mają być powiązane z określonymi kolumnami tabeli. Struktura wiąże kolumny rekordów z adresami tych elementów członkowskich, używając ich jako buforów. Struktura określa korelację składowych danych pól z kolumn tabeli z wywołań funkcji RFX lub Bulk RFX w funkcji DoFieldExchange lub DoBulkFieldExchange zestawu rekordów.

  • Filtr zestawu rekordów, jeśli istnieje, zawarty w m_strFilter składowej danych. Struktura używa tego ciągu do konstruowania klauzuli SQL WHERE .

  • Kolejność sortowania zestawu rekordów, jeśli istnieje, zawarta w m_strSort składowej danych. Struktura używa tego ciągu do konstruowania klauzuli SQL ORDER BY .

    Napiwek

    Aby użyć klauzuli SQL GROUP BY (i ewentualnie klauzuli HAVING ), dołącz klauzule na końcu ciągu filtru.

  • Wartości wszystkich składowych danych parametrów, które określisz dla klasy. Wartości parametrów ustawia się tuż przed wywołaniem Open metody lub Requery. Struktura wiąże wartości parametrów z symbolami zastępczymi "?" w ciągu SQL. W czasie kompilacji należy określić ciąg z symbolami zastępczymi. W czasie wykonywania struktura wypełnia szczegóły na podstawie przekazanych wartości parametrów.

Open tworzy instrukcję SQL SELECT z tych składników. Aby uzyskać szczegółowe informacje na temat sposobu korzystania ze składników, zobacz Dostosowywanie zaznaczenia .

Po utworzeniu instrukcji Open wysyła program SQL do Menedżera sterowników ODBC (i bibliotekę kursorów ODBC, jeśli jest w pamięci), która wysyła go do sterownika ODBC dla określonego systemu DBMS. Sterownik komunikuje się z usługą DBMS, aby przeprowadzić wybór źródła danych i pobrać pierwszy rekord. Struktura ładuje rekord do elementów członkowskich danych pól zestawu rekordów.

Można użyć kombinacji tych technik, aby otworzyć tabele i utworzyć zapytanie na podstawie sprzężenia wielu tabel. Dzięki dodatkowemu dostosowaniu można wywoływać wstępnie zdefiniowane zapytania (procedury składowane), wybierać kolumny tabeli, które nie są znane w czasie projektowania, i powiązać je z polami zestawu rekordów lub wykonywać większość innych zadań dostępu do danych. Zadania, których nie można wykonać, dostosowując zestawy rekordów, można nadal wykonywać przez wywoływanie funkcji interfejsu API ODBC lub bezpośrednie wykonywanie instrukcji SQL za pomocą bazy danych CDatabase::ExecuteSQL.

Dostosowywanie zaznaczenia

Oprócz podawania filtru, kolejności sortowania lub parametrów można wykonać następujące akcje, aby dostosować wybór zestawu rekordów:

  • Przekaż niestandardowy ciąg SQL w narzędziu lpszSQL podczas wywoływania polecenia Open dla zestawu rekordów. Wszystko, co przekazujesz lpsqSQL, ma pierwszeństwo przed tym, co zwraca funkcja składowa GetDefaultSQL.

    Aby uzyskać więcej informacji, zobacz SQL: Dostosowywanie instrukcji SQL zestawu rekordów (ODBC), w którym opisano typy instrukcji SQL (lub instrukcji częściowych), do Open których można przekazać strukturę i co z nimi robi.

    Uwaga

    Jeśli przekazany ciąg niestandardowy nie zaczyna się od ciągu "SELECT" lub "{CALL", MFC zakłada, że zawiera nazwę tabeli. Dotyczy to również następnego elementu punktowanego.

  • Zmień ciąg zapisywany przez kreatora w funkcji składowej GetDefaultSQL zestawu rekordów. Edytuj kod funkcji, aby zmienić zwracaną zawartość. Domyślnie kreator zapisuje funkcję zwracającą GetDefaultSQL pojedynczą nazwę tabeli.

    Możesz zwrócić GetDefaultSQL dowolny element, który można przekazać w parametrze lpszSQL do Open. Jeśli nie przekażesz niestandardowego ciągu SQL w lpszSQL, struktura używa zwracanego ciągu GetDefaultSQL . Co najmniej GetDefaultSQL musi zwrócić pojedynczą nazwę tabeli. Można jednak zwrócić wiele nazw tabel, pełną instrukcję SELECT , instrukcję ODBC CALL itd. Aby uzyskać listę elementów, które można przekazać do bazy danych lpszSQL — lub zwrócić GetDefaultSQL — zobacz SQL: Dostosowywanie instrukcji SQL zestawu rekordów (ODBC).

    Jeśli wykonujesz sprzężenie co najmniej dwóch tabel, zapisz GetDefaultSQL ponownie, aby dostosować listę tabel używaną w klauzuli SQL FROM . Aby uzyskać więcej informacji, zobacz Zestaw rekordów: wykonywanie sprzężenia (ODBC).

  • Ręcznie powiąż dodatkowe elementy członkowskie danych pól, na przykład na podstawie informacji uzyskiwanych na temat schematu źródła danych w czasie wykonywania. Składowe danych pól są dodawane do klasy zestawu rekordów, funkcji RFX lub Bulk RFX do funkcji składowej DoFieldExchange lub DoBulkFieldExchange oraz inicjowania składowych danych w konstruktorze klasy. Aby uzyskać więcej informacji, zobacz Zestaw rekordów: dynamiczne wiązanie kolumn danych (ODBC).

  • Zastąpij funkcje składowe zestawu rekordów, takie jak OnSetOptions, w celu ustawienia opcji specyficznych dla aplikacji lub zastąpienia wartości domyślnych.

Jeśli chcesz opierać zestaw rekordów na złożonej instrukcji SQL, należy użyć kombinacji tych technik dostosowywania. Na przykład możesz użyć klauzul SQL i słów kluczowych, które nie są bezpośrednio obsługiwane przez zestawy rekordów, a może dołączasz wiele tabel.

Zobacz też

Zestaw rekordów (ODBC)
Zestaw rekordów: jak zestawy rekordów aktualizują rekordy (ODBC)
Podstawy ODBC
SQL
Zestaw rekordów: blokowanie rekordów (ODBC)