Sdílet prostřednictvím


Dynamická sada

Toto téma popisuje dynamické sady a popisuje jejich dostupnost.

Poznámka:

Toto téma se týká tříd MFC ODBC, včetně CRecordset. Informace o dynasets ve třídách DAO naleznete v CDaoRecordset. V jazyce DAO můžete otevřít sady záznamů typu dynaset.

Dynamická sada je sada záznamů s dynamickými vlastnostmi. Během své životnosti zůstává objekt sady záznamů v režimu dynaset (obvykle označovaný jako dynaset) synchronizován se zdrojem dat následujícím způsobem. V prostředí s více uživateli můžou jiní uživatelé upravovat nebo odstraňovat záznamy, které jsou ve vaší dynamické sadě, nebo přidávat záznamy do tabulky, kterou dynaset představuje. Záznamy, které vaše aplikace přidá nebo odstraní ze sady záznamů, se projeví v dynasetu. Záznamy, které ostatní uživatelé přidají do tabulky, se v dynasetu neprojeví, dokud dynamickou sadu znovu nesvoláte voláním její Requery členské funkce. Když ostatní uživatelé odstraní záznamy, kód MFC přeskočí odstranění v sadě záznamů. Změny úprav existujících záznamů ostatních uživatelů se projeví v dynasetu, jakmile se posunete na ovlivněný záznam.

Podobně se úpravy provedené v záznamech v dynasetu projeví v dynamasech, které používají jiní uživatelé. Záznamy, které přidáte, se neprojeví v dynamických sadách jiných uživatelů, dokud se znovu nezobrazí jejich dynasety. Záznamy, které odstraníte, se v sadách záznamů jiných uživatelů označí jako odstraněné. Pokud máte více připojení ke stejné databázi (více CDatabase objektů), sady záznamů přidružené k těmto připojením mají stejný stav jako sady záznamů jiných uživatelů.

Dynamické sady jsou nejužitečnější, když musí být data dynamická, například v rezervačním systému leteckých společností.

Poznámka:

Chcete-li použít dynamické sady, musíte mít ovladač ODBC pro zdroj dat, který podporuje dynasety a knihovna kurzorů ODBC nesmí být načtena. Další informace naleznete v tématu Dostupnost dynamických sad.

Chcete-li určit, že sada záznamů je dynaset, předejte CRecordset::dynaset jako první parametr Open členské funkci objektu sady záznamů.

Poznámka:

U aktualizovatelných dynamických sad musí ovladač ODBC podporovat buď umístěné aktualizační příkazy, nebo ::SQLSetPos funkci rozhraní ODBC API. Pokud jsou obě podporované, mfc se používá ::SQLSetPos k zajištění efektivity.

Dostupnost dynamických sad

Třídy databáze MFC podporují dynamické sady, pokud jsou splněny následující požadavky:

  • Knihovna DLL knihovny kurzorů ODBC nesmí být pro tento zdroj dat používána.

    Pokud se používá knihovna kurzorů, maskuje některé funkce základního ovladače ODBC, který je nezbytný pro podporu dynaset. Pokud chcete použít dynasety (a ovladač ODBC má funkce vyžadované pro dynamické sady, jak je popsáno ve zbytku této části), můžete způsobit, že mfc při vytváření objektu nenačte knihovnu kurzorů CDatabase . Další informace naleznete v tématu ODBC a OpenEx nebo Open členské funkce třídy CDatabase.

    V terminologii ODBC se dynamické sady a snímky označují jako kurzory. Kurzor je mechanismus, který slouží k sledování jeho pozice v sadě záznamů.

  • Ovladač ODBC pro váš zdroj dat musí podporovat kurzory řízené sadou klíčů.

    Kurzory řízené sadou klíčů spravují data z tabulky získáním a uložením sady klíčů. Klíče slouží k získání aktuálních dat z tabulky, když se uživatel posune na konkrétní záznam. Pokud chcete zjistit, jestli ovladač tuto podporu poskytuje, zavolejte ::SQLGetInfo funkci rozhraní ODBC API s parametrem SQL_SCROLL_OPTIONS .

    Pokud se pokusíte otevřít dynamickou sadu bez podpory sady klíčů, získáte návratovou CDBException hodnotu kódu AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED.

  • Ovladač ODBC pro váš zdroj dat musí podporovat rozšířené načítání.

    Rozšířené načítání je možnost posouvání dozadu a také dopředu přes výsledné záznamy dotazu SQL. Pokud chcete zjistit, jestli ovladač tuto schopnost podporuje, zavolejte ::SQLGetFunctions funkci rozhraní ODBC API s parametrem SQL_API_SQLEXTENDEDFETCH .

Pokud chcete aktualizovatelné dynamické sady (nebo snímky), musí ovladač ODBC podporovat ::SQLSetPos také funkci rozhraní ODBC API nebo umístěné aktualizace. Funkce ::SQLSetPos umožňuje mfc aktualizovat zdroj dat bez odesílání příkazů SQL. Pokud je tato podpora dostupná, mfc ji použije ve předvolbě k provádění aktualizací pomocí SQL. Pokud chcete zjistit, jestli ovladač podporuje::SQLSetPos, zavolejte ::SQLGetInfo pomocí SQL_POS_OPERATIONS parametru.

Umístěné aktualizace používají syntaxi SQL (ve formuláři WHERE CURRENT OF<cursorname>) k identifikaci konkrétního řádku v tabulce ve zdroji dat. Pokud chcete zjistit, jestli ovladač podporuje umístěné aktualizace, zavolejte ::SQLGetInfo pomocí parametru SQL_POSITIONED_STATEMENTS .

Obecně platí, že dynamické sady MFC (ale ne sady záznamů jen pro předávání) vyžadují ovladač ODBC s shodami rozhraní API úrovně 2. Pokud ovladač pro váš zdroj dat odpovídá sadě rozhraní API úrovně 1, můžete stále používat aktualizovatelné snímky a sady záznamů jen pro čtení, ale ne dynasety. Ovladač úrovně 1 však může podporovat dynamické sady, pokud podporuje rozšířené načítání a kurzory řízené klávesovou sadou. Další informace o úrovních shody rozhraní ODBC naleznete v tématu ODBC.

Poznámka:

Pokud chcete použít snímky i dynamické sady, musíte je založit na dvou různých CDatabase objektech (dvě různá připojení).

Na rozdíl od snímků, které používají přechodné úložiště spravované knihovnou kurzorů ODBC, dynamická sada načte záznam přímo ze zdroje dat, jakmile se k němu posunete. Tím se záznamy původně vybrané dynasetem synchronizují se zdrojem dat.

Seznam ovladačů ODBC zahrnutých v této verzi jazyka Visual C++ a informace o získání dalších ovladačů naleznete v tématu Seznam ovladačů ODBC.

Viz také

Open Database Connectivity (ODBC)