Freigeben über


Scrollbare Cursor

In modernen bildschirmbasierten Anwendungen scrollt der Benutzer rückwärts und vorwärts durch die Daten. Bei solchen Anwendungen ist die Rückkehr zu einer zuvor abgerufenen Zeile ein Problem. Eine Möglichkeit besteht darin, den Cursor zu schließen und erneut zu öffnen und dann Zeilen abzurufen, bis der Cursor die erforderliche Zeile erreicht. Eine weitere Möglichkeit besteht darin, das Resultset zu lesen, lokal zwischenzuspeichern und Scrollen in der Anwendung zu implementieren. Beide Möglichkeiten funktionieren nur mit kleinen Ergebnismengen gut, und letztere Möglichkeit ist schwierig zu implementieren. Eine bessere Lösung besteht darin, einen bildlauffähigen Cursor zu verwenden, der sich im Resultset rückwärts und vorwärts bewegen kann.

Ein bildlaufbarer Cursor wird häufig in modernen bildschirmbasierten Anwendungen verwendet, in denen der Benutzer durch die Daten scrollt. Anwendungen sollten jedoch bildlauffähige Cursor nur verwenden, wenn Vorwärtscursor nicht den Auftrag ausführen, da bildlauffähige Cursor im Allgemeinen teurer sind als Vorwärtscursor.

Die Möglichkeit, rückwärts zu navigieren, löst eine Frage aus, die nicht für Vorwärtscursor gilt: Sollte ein bildlauffähiger Cursor Änderungen erkennen, die an Zeilen vorgenommen wurden, die zuvor abgerufen wurden? Das heißt, sollte es aktualisierte, gelöschte und neu eingefügte Zeilen erkennen?

Diese Frage stellt sich heraus, weil die Definition eines Resultsets - der Satz von Zeilen, die bestimmten Kriterien entsprechen - nicht angezeigt wird, wenn Zeilen überprüft werden, um festzustellen, ob sie diesen Kriterien entsprechen, oder gibt an, ob Zeilen bei jedem Abruf dieselben Daten enthalten müssen. Die frühere Auslassung ermöglicht es bildlauffähigen Cursorn zu erkennen, ob Zeilen eingefügt oder gelöscht wurden, während letzteres ermöglicht, aktualisierte Daten zu erkennen.

Die Möglichkeit zum Erkennen von Änderungen ist manchmal nützlich, manchmal nicht. Beispielsweise benötigt eine Buchhaltungsanwendung einen Cursor, der alle Änderungen ignoriert; Das Ausgleichen von Büchern ist unmöglich, wenn der Cursor die neuesten Änderungen anzeigt. Andererseits benötigt ein Fluglinienreservierungssystem einen Cursor, der die neuesten Änderungen an den Daten anzeigt; ohne einen solchen Cursor muss die Datenbank kontinuierlich erneut abgefragt werden, um die aktuellste Flight-Verfügbarkeit anzuzeigen.

Um die Anforderungen verschiedener Anwendungen zu decken, definiert ODBC vier verschiedene Arten von bildlauffähigen Cursorn. Diese Cursor variieren sowohl in Spesen als auch in ihrer Fähigkeit, Änderungen am Resultset zu erkennen. Wenn ein bildlaufbarer Cursor Änderungen an Zeilen erkennen kann, kann er diese nur erkennen, wenn versucht wird, diese Zeilen zurückzuweisen; Es gibt keine Möglichkeit für die Datenquelle, den Cursor über Änderungen an den aktuell abgerufenen Zeilen zu benachrichtigen. Beachten Sie außerdem, dass auch die Sichtbarkeit von Änderungen durch die Transaktionsisolationsstufe gesteuert wird; weitere Informationen finden Sie unter Transaktionsisolation.

In diesem Abschnitt werden die folgenden Themen behandelt: