Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W nowoczesnych aplikacjach opartych na ekranie użytkownik przewija się do tyłu i do przodu przez dane. W przypadku takich aplikacji powrót do wcześniej pobranego wiersza jest problemem. Jedną z możliwości jest zamknięcie i ponowne otwarcie kursora, a następnie pobranie wierszy do momentu dotarcia kursora do wymaganego wiersza. Inną możliwością jest odczytywanie zestawu wyników, buforowanie go lokalnie i implementowanie przewijania w aplikacji. Obie możliwości działają dobrze tylko z małymi zestawami wyników, a druga możliwość jest trudna do zaimplementowania. Lepszym rozwiązaniem jest użycie kursora przewijanego, który może poruszać się do tyłu i do przodu w zestawie wyników.
Kursor przewijany jest często używany w nowoczesnych aplikacjach opartych na ekranie, w których użytkownik przewija się tam i z powrotem przez dane. Jednak aplikacje powinny używać kursorów przewijanych tylko wtedy, gdy kursory tylko do przodu nie będą wykonywać zadania, ponieważ kursory z możliwością przewijania są zazwyczaj droższe niż kursory tylko do przodu.
Możliwość poruszania się do tyłu rodzi pytanie, które nie dotyczy kursorów jednokierunkowych: czy kursor umożliwiający przewijanie powinien wykrywać zmiany dokonane w wcześniej pobranych wierszach? Oznacza to, że czy powinien wykrywać zaktualizowane, usunięte i nowo wstawione wiersze?
Powstaje to pytanie, ponieważ definicja zestawu wyników — zestaw wierszy pasujących do określonych kryteriów — nie określa, czy wiersze są sprawdzane, czy są zgodne z tymi kryteriami, ani nie określa, czy wiersze muszą zawierać te same dane za każdym razem, gdy są pobierane. Poprzednie pominięcie umożliwia przewijanie kursorów w celu wykrycia, czy wiersze zostały wstawione, czy usunięte, podczas gdy te ostatnie umożliwiają wykrywanie zaktualizowanych danych.
Możliwość wykrywania zmian jest czasami przydatna, czasami nie. Na przykład aplikacja księgowa potrzebuje kursora, który ignoruje wszystkie zmiany; równoważenie książek jest niemożliwe, jeśli kursor pokazuje najnowsze zmiany. Z drugiej strony, system rezerwacji linii lotniczych potrzebuje kursora, który pokazuje najnowsze zmiany w danych; bez takiego kursora musi stale ponownie pytać bazę danych, aby pokazać najbardziej aktualną dostępność lotów.
Aby pokryć potrzeby różnych aplikacji, ODBC definiuje cztery różne typy kursorów przewijanych. Te kursory różnią się zarówno w wydatkach, jak i w ich możliwości wykrywania zmian w zestawie wyników. Należy pamiętać, że jeśli kursor przewijany może wykryć zmiany w wierszach, może wykryć je tylko podczas próby ponownego pobrania tych wierszy; źródło danych nie ma możliwości powiadamiania kursora o zmianach w aktualnie pobranych wierszach. Należy również pamiętać, że widoczność zmian jest również kontrolowana przez poziom izolacji transakcji; Aby uzyskać więcej informacji, zobacz Izolacja transakcji.
Ta sekcja zawiera następujące tematy.