Sada záznamů: Jak sady záznamů vybírají záznamy (ODBC)
Poznámka:
Průvodce příjemcem rozhraní ODBC MFC není v sadě Visual Studio 2019 a novější k dispozici. Příjemce můžete přesto vytvořit ručně.
Toto téma se vztahuje na třídy MFC ODBC.
Toto téma vysvětluje:
Sady záznamů vybírají záznamy ze zdroje dat prostřednictvím ovladače ODBC odesláním příkazů SQL do ovladače. Odeslaný SQL závisí na tom, jak navrhujete a otevíráte třídu sady záznamů.
Možnosti při výběru záznamů
V následující tabulce jsou uvedeny možnosti při výběru záznamů.
Jak a kdy můžete ovlivnit sadu záznamů
Když vy | Můžete |
---|---|
Deklarace třídy sady záznamů pomocí Průvodce přidáním třídy | Zadejte tabulku, ze které se má vybrat. Zadejte sloupce, které chcete zahrnout. Viz Přidání příjemce ROZHRANÍ ODBC MFC. |
Dokončení implementace třídy sady záznamů | Můžete přepsat členské funkce, jako OnSetOptions jsou (pokročilé), a nastavit tak možnosti specifické pro aplikaci nebo změnit výchozí hodnoty. Pokud chcete parametrizovanou sadu záznamů, zadejte datové členy parametrů. |
Vytvoření objektu sady záznamů (před voláním Open ) |
Zadejte podmínku hledání (pravděpodobně složenou ) pro použití v klauzuli WHERE , která filtruje záznamy. Viz Sada záznamů: Filtrování záznamů (ODBC). Zadejte pořadí řazení pro použití v klauzuli ORDER BY , která seřadí záznamy. Viz Sada záznamů: Řazení záznamů (ODBC) Zadejte hodnoty parametrů pro všechny parametry, které jste přidali do třídy. Viz Sada záznamů: Parametrizace sady záznamů (ODBC). |
|Spuštění dotazu sady záznamů voláním Open
|Zadejte vlastní řetězec SQL, který nahradí výchozí řetězec SQL nastavený průvodcem. Viz CRecordset::Open v referenčních informacích knihovny tříd a SQL: Přizpůsobení příkazu SQL sady záznamů (ODBC)|
|Volání Requery
pro opětovné dotazování sady záznamů s nejnovějšími hodnotami ve zdroji dat|Zadejte nové parametry, filtr nebo řazení. Viz Sada záznamů: Opětovné dotazování sady záznamů (ODBC)|
Jak sada záznamů vytvoří svůj příkaz SQL
Při volání open členské funkce Open
objektu sady záznamů vytvoří příkaz SQL pomocí některých nebo všech následujících ingrediencí:
Parametr lpszSQL předaný do
Open
. Pokud není null, tento parametr určuje vlastní řetězec SQL nebo část jednoho. Architektura analyzuje řetězec. Pokud je řetězec příkazEM SQL SELECT nebo příkazem ODBC CALL , architektura používá řetězec jako příkaz SQL sady záznamů. Pokud řetězec nezačíná řetězcem SELECT nebo {CALL, architektura použije k vytvoření klauzule SQL FROM dodanou položku.Řetězec vrácený getDefaultSQL. Ve výchozím nastavení se jedná o název tabulky, kterou jste zadali pro sadu záznamů v průvodci, ale můžete změnit, co funkce vrátí. Volání architektury
GetDefaultSQL
– pokud řetězec nezačíná řetězcem SELECT nebo {CALL, předpokládá se, že se jedná o název tabulky, který se používá k vytvoření řetězce SQL.Datové členy sady záznamů pole, které mají být svázané s konkrétními sloupci tabulky. Architektura sváže sloupce záznamů s adresami těchto členů a použije je jako vyrovnávací paměť. Architektura určuje korelaci datových členů pole se sloupci tabulky ze volání funkce RFX nebo Bulk RFX v sadě záznamů DoFieldExchange nebo DoBulkFieldExchange členské funkce.
Filtr sady záznamů, pokud existuje, obsažený v datovém členu m_strFilter. Tato architektura používá tento řetězec k vytvoření klauzule SQL WHERE .
Pořadí řazení sady záznamů, pokud existuje, obsažené v datovém členu m_strSort . Architektura používá tento řetězec k vytvoření klauzule SQL ORDER BY .
Tip
Pokud chcete použít klauzuli SQL GROUP BY (a případně klauzuli HAVING ), připojte klauzule na konec řetězce filtru.
Hodnoty všech datových členů parametrů, které zadáte pro třídu. Hodnoty parametrů nastavíte těsně před voláním
Open
neboRequery
. Architektura vytvoří vazbu hodnot parametrů na zástupné symboly "?" v řetězci SQL. V době kompilace zadáte řetězec se zástupnými symboly. V době běhu rozhraní vyplní podrobnosti na základě hodnot parametrů, které předáte.
Open
vytvoří příkaz SQL SELECT z těchto složek. Podrobnosti o tom, jak architektura používá složky, najdete v tématu Přizpůsobení výběru .
Po vytvoření příkazu Open
odešle SQL správci ovladačů ODBC (a knihovny kurzorů ODBC, pokud je v paměti), která ji odešle do ovladače ODBC pro konkrétní DBMS. Ovladač komunikuje s DBMS, aby provedl výběr ve zdroji dat a načte první záznam. Architektura načte záznam do datových členů sady záznamů.
Pomocí kombinace těchto technik můžete otevřít tabulky a vytvořit dotaz založený na spojení více tabulek. Pomocí dalšího přizpůsobení můžete volat předdefinované dotazy (uložené procedury), vybrat sloupce tabulky, které nejsou v době návrhu známé, a svázat je s poli sady záznamů nebo můžete provádět většinu dalších úloh přístupu k datům. Úlohy, které nelze provést přizpůsobením sad záznamů, je stále možné dosáhnout voláním funkcí rozhraní ODBC API nebo přímým spuštěním příkazů SQL pomocí CDatabase::ExecuteSQL.
Přizpůsobení výběru
Kromě zadávání filtru, pořadí řazení nebo parametrů můžete pomocí následujících akcí přizpůsobit výběr sady záznamů:
Při volání open pro sadu záznamů předejte vlastní řetězec SQL v lpszSQL. Cokoli, co předáte lpsqSQL, má přednost před tím, co vrátí členová funkce GetDefaultSQL.
Další informace najdete v tématu SQL: Přizpůsobení příkazu SQL sady záznamů (ODBC), který popisuje typy příkazů SQL (nebo částečné příkazy), které můžete předat
Open
a co s nimi architektura dělá.Poznámka:
Pokud vlastní řetězec, který předáte, nezačíná řetězcem SELECT nebo {CALL, mfc předpokládá, že obsahuje název tabulky. To platí i pro další položku s odrážkami.
Upravte řetězec, který průvodce zapisuje do členské funkce sady záznamů
GetDefaultSQL
. Upravte kód funkce a změňte, co vrací. Ve výchozím nastavení průvodce zapíšeGetDefaultSQL
funkci, která vrátí název jedné tabulky.Můžete vrátit
GetDefaultSQL
kteroukoli z položek, které můžete předat parametr lpszSQL doOpen
. Pokud v lpszSQL nepředáte vlastní řetězec SQL, architektura použije řetězec, kterýGetDefaultSQL
se vrátí. MinimálněGetDefaultSQL
musí vrátit název jedné tabulky. Můžete však vrátit více názvů tabulek, úplný příkaz SELECT , příkaz ODBC CALL atd. Seznam toho, co můžete předat lpszSQL – nebo vrátitGetDefaultSQL
– najdete v tématu SQL: Přizpůsobení příkazu SQL sady záznamů (ODBC)Pokud provádíte spojení dvou nebo více tabulek, přepište
GetDefaultSQL
seznam tabulek použitý v klauzuli SQL FROM . Další informace naleznete v tématu Sada záznamů: Provedení spojení (ODBC).Ručně svázat další datové členy pole, například na základě informací, které získáte o schématu zdroje dat za běhu. Datové členy pole přidáte do třídy sady záznamů, RFX nebo Bulk RFX volání pro ně do DoFieldExchange nebo DoBulkFieldExchange členské funkce a inicializace datových členů v konstruktoru třídy. Další informace naleznete v tématu Sada záznamů: Dynamické vazby datových sloupců (ODBC).
Můžete přepsat členské funkce sady záznamů, například
OnSetOptions
nastavit možnosti specifické pro aplikaci nebo přepsat výchozí hodnoty.
Pokud chcete založit sadu záznamů na složitém příkazu SQL, musíte použít určitou kombinaci těchto technik přizpůsobení. Možná například chcete použít klauzule SQL a klíčová slova, která nejsou přímo podporována sadami záznamů nebo možná připojujete více tabulek.
Viz také
Sada záznamů (ODBC)
Sada záznamů: Jak sady záznamů aktualizují záznamy (ODBC)
ODBC – základy
SQL
Sada záznamů: Zamykání záznamů (ODBC)