Sdílet prostřednictvím


Relativní a absolutní posouvání

Většina možností posouvání v SQLFetchScroll umístí kurzor vzhledem k aktuální pozici nebo absolutní pozici. SQLFetchScroll podporuje načtení dalších, předchozích, prvních a posledních sad řádků a také relativní načtení (načtení sady řádků n řádků od začátku aktuální sady řádků) a absolutní načtení (načtení sady řádků od řádku n). Pokud je hodnota n záporné při absolutním načítání, řádky se počítají od konce sady výsledků. Absolutní načtení řádku -1 znamená načtení sady řádků, která začíná posledním řádkem v sadě výsledků.

Dynamické kurzory detekují řádky vložené do a odebrané ze sady výsledků, takže je pro ně obtížné načíst řádek na konkrétním čísle jinak, než vyžaduje načítání od začátku sady výsledků, což může být pomalé. Kromě toho absolutní načítání není velmi užitečné v dynamických kurzorech, protože čísla řádků se mění při vkládání a odstraňování řádků; proto následné načtení stejného čísla řádku může přinést různé řádky.

Aplikace, které používají SQLFetchScroll pouze pro funkce blokového kurzoru, jako jsou sestavy, budou pravděpodobně procházet sadu výsledků jednou, a to pouze pomocí možnosti načíst další sadu řádků. Na druhou stranu aplikace založené na obrazovkách můžou využívat všechny možnosti SQLFetchScrollu. Pokud aplikace nastaví velikost sady řádků na počet řádků zobrazených na obrazovce a naváže vyrovnávací paměti obrazovky na sadu výsledků, může operace posuvníku přeložit přímo na volání SQLFetchScroll.

Operace posuvníku Možnost rolování SQLFetchScroll
Stránka nahoru SQL_FETCH_PRIOR
Stránka dolů SQL_FETCH_NEXT
Seřadit se SQL_FETCH_RELATIVE s hodnotou FetchOffset, která se rovná -1
Řádek dolů SQL_FETCH_RELATIVE s hodnotou FetchOffset rovnou 1
Posuvník nahoře SQL_FETCH_FIRST
Posuvník dole SQL_FETCH_LAST
Pozice náhodného scrollovacího pole SQL_FETCH_ABSOLUTE

Tyto aplikace také potřebují umístit posuvník po operaci posouvání, což vyžaduje číslo aktuálního řádku a počet řádků. Pro aktuální číslo řádky mohou aplikace buď sledovat aktuální číslo řádky, případně zavolat SQLGetStmtAttr s atributem SQL_ATTR_ROW_NUMBER k jeho načtení.

Počet řádků v kurzoru, což je velikost sady výsledků, je k dispozici jako pole SQL_DIAG_CURSOR_ROW_COUNT záhlaví diagnostiky. Hodnota v tomto poli je definována pouze po volání SQLExecute, SQLExecDirect nebo SQLMoreResult . Tento počet může být buď přibližný, nebo přesný počet v závislosti na schopnostech řidiče. Podporu ovladače lze určit voláním sqlGetInfo s typy informací o atributech kurzoru a kontrolou, zda SQL_CA2_CRC_APPROXIMATE nebo SQL_CA2_CRC_EXACT bit je vrácen pro typ kurzoru.

Přesný počet řádků není nikdy podporován dynamickým kurzorem. U jiných typů kurzorů může ovladač podporovat přesný nebo přibližný počet řádků, ale ne obojí. Pokud ovladač nepodporuje přesný ani přibližný počet řádků pro určitý typ kurzoru, pole SQL_DIAG_CURSOR_ROW_COUNT obsahuje počet řádků, které byly dosud načteny. Bez ohledu na to, co ovladač podporuje, SQLFetchScroll s operací SQL_FETCH_LAST způsobí, že pole SQL_DIAG_CURSOR_ROW_COUNT bude obsahovat přesný počet řádků.