Sdílet prostřednictvím


ODBC: Knihovna kurzorů rozhraní ODBC

Toto téma popisuje knihovnu kurzorů ODBC a vysvětluje, jak ji používat. Další informace naleznete v tématu:

Knihovna kurzorů ODBC je dynamická knihovna (DLL), která se nachází mezi správcem ovladačů ODBC a ovladačem. Pokud jde o rozhraní ODBC, ovladač udržuje kurzor pro sledování své pozice v sadě záznamů. Kurzor označí pozici v sadě záznamů, na kterou jste se už posouli – aktuální záznam.

Knihovna kurzorů a ovladače ODBC úrovně 1

Knihovna kurzorů ODBC poskytuje ovladače úrovně 1 následující nové funkce:

  • Dopředu a dozadu se posunete. Ovladače úrovně 2 nepotřebují knihovnu kurzorů, protože se už dají posunout.

  • Podpora snímků Knihovna kurzorů spravuje vyrovnávací paměť obsahující záznamy snímku. Tato vyrovnávací paměť odráží odstranění a úpravy programu v záznamech, ale ne přidávání, odstraňování nebo úprav jiných uživatelů. Snímek je proto pouze aktuální jako vyrovnávací paměť knihovny kurzorů. Vyrovnávací paměť také neodráží vaše vlastní dodatky, dokud nezavoláte Requery. Dynamické sady nepoužívají knihovnu kurzorů.

Knihovna kurzorů poskytuje snímky (statické kurzory), i když je ovladač normálně nepodporuje. Pokud ovladač již podporuje statické kurzory, není nutné načíst knihovnu kurzorů, abyste získali podporu snímků. Pokud používáte knihovnu kurzorů, můžete použít jenom snímky a sady záznamů jen pro předávání. Pokud ovladač podporuje dynamické sady (KEYSET_DRIVEN kurzory) a chcete je použít, nesmíte použít knihovnu kurzorů. Pokud chcete použít snímky i dynamické sady, musíte je založit na dvou různých objektech (dvě různá CDatabase připojení), pokud ovladač nepodporuje obojí.

Poziční aktualizace a sloupce časového razítka

Poznámka:

Zdroje dat ODBC jsou přístupné prostřednictvím tříd MFC ODBC, jak je popsáno v tomto tématu, nebo prostřednictvím tříd ROZHRANÍ DAO (Data Access Object).

Poznámka:

Pokud ovladač ODBC podporuje SQLSetPos, který mfc používá, pokud je k dispozici, toto téma se na vás nevztahuje.

Většina ovladačů úrovně 1 nepodporuje umístěné aktualizace. Tyto ovladače spoléhají na knihovnu kurzorů k emulaci schopností ovladačů úrovně 2 v tomto ohledu. Knihovna kurzorů emuluje podporu umístěných aktualizací provedením prohledáné aktualizace v nezměněných polích.

V některých případech může sada záznamů obsahovat sloupec časového razítka jako jedno z těchto neměnných polí. Při používání sad záznamů MFC s tabulkami, které obsahují sloupce časového razítka, vznikají dva problémy.

Prvním problémem jsou aktualizovatelné snímky tabulek se sloupci časového razítka. Pokud tabulka, na kterou je snímek svázaný, obsahuje sloupec časového razítka, měli byste zavolat Requery po volání Edit a Update. Pokud ne, možná nebudete moct stejný záznam znovu upravit. Při volání a následném Updatevolání Edit se záznam zapíše do zdroje dat a sloupec časového razítka se aktualizuje. Pokud nezavoláte Requery, hodnota časového razítka záznamu ve snímku už neodpovídá odpovídajícímu časovému razítku ve zdroji dat. Když se pokusíte záznam aktualizovat znovu, zdroj dat může aktualizaci z důvodu neshody zakázat.

Druhý problém se týká omezení třídy CTime při použití s RFX_Date funkcí k přenosu informací o čase a datu do nebo z tabulky. Zpracování objektu CTime vyžaduje určité režijní náklady ve formě dodatečného zprostředkujícího zpracování během přenosu dat. Rozsah dat CTime objektů může být také příliš omezený pro některé aplikace. Nová verze RFX_Date funkce přebírá namísto objektu parametr CTime ODBC TIMESTAMP_STRUCT. Další informace naleznete v makrech RFX_Date a globálních objektech v referenční dokumentaci MFC.

Použití knihovny kurzorů

Když se připojíte ke zdroji dat – zavoláním CDatabase::OpenEx nebo CDatabase::Open – můžete určit, jestli se má pro zdroj dat použít knihovna kurzorů. Pokud budete vytvářet snímky v daném zdroji dat, zadejte CDatabase::useCursorLib v parametru dwOptions OpenEx možnost nebo zadejte hodnotu TRUE pro parametr bUseCursorLib ( Open výchozí hodnota je PRAVDA). Pokud ovladač ODBC podporuje dynamické sady a chcete otevřít dynamické sady ve zdroji dat, nepoužívejte knihovnu kurzorů (maskuje některé funkce ovladače potřebné pro dynasety). V takovém případě nezadávejte CDatabase::useCursorLib OpenEx hodnotu NEPRAVDA pro parametr bUseCursorLib v Open.

Viz také

ODBC – základy