Freigeben über


ODBC-Cursor

Eine Anwendung ruft Daten mit einem Cursor ab. Ein Cursor unterscheidet sich von einem Resultset: Ein Resultset ist der Satz von Zeilen, die bestimmten Suchkriterien entsprechen, während ein Cursor die Software ist, die diese Zeilen an die Anwendung zurückgibt. Der Namenscursor , wie er für Datenbanken gilt, stammt wahrscheinlich vom blinkenden Cursor auf einem Computerterminal. Genau wie dieser Cursor die aktuelle Position auf dem Bildschirm angibt und wo die eingegebenen Wörter als Nächstes angezeigt werden, gibt ein Cursor in einem Resultset die aktuelle Position im Resultset an und welche Zeile als Nächstes zurückgegeben wird.

Das Cursormodell in ODBC basiert auf dem Cursormodell in embedded SQL. Ein wichtiger Unterschied zwischen diesen Modellen besteht darin, wie Cursor geöffnet werden. In embedded SQL muss ein Cursor explizit deklariert und geöffnet werden, bevor er verwendet werden kann. In ODBC wird ein Cursor implizit geöffnet, wenn eine Anweisung, die ein Resultset erstellt, ausgeführt wird. Wenn der Cursor geöffnet wird, wird er vor der ersten Zeile des Resultsets positioniert. In eingebettetem SQL und ODBC muss ein Cursor geschlossen werden, nachdem die Anwendung sie verwendet hat.

Unterschiedliche Cursor weisen unterschiedliche Merkmale auf. Der am häufigsten verwendete Cursortyp, der als Vorwärtscursor bezeichnet wird, kann nur durch das Resultset vorwärts navigieren. Um zu einer vorherigen Zeile zurückzukehren, muss die Anwendung den Cursor schließen und erneut öffnen und dann Zeilen vom Anfang des Resultsets lesen, bis sie die erforderliche Zeile erreicht. Vorwärtscursor bieten einen schnellen Mechanismus zum Erstellen eines einzelnen Durchlaufs eines Resultsets.

Vorwärtscursor sind für bildschirmbasierte Anwendungen weniger nützlich, bei denen der Benutzer rückwärts und vorwärts durch die Daten scrollt. Solche Anwendungen können einen Vorwärtscursor verwenden, indem sie das Resultset einmal lesen, die Daten lokal zwischenspeichern und einen Bildlauf selbst durchführen. Dies funktioniert jedoch nur bei kleinen Datenmengen. Eine bessere Lösung ist die Verwendung eines bildlauffähigen Cursors, der zufälligen Zugriff auf das Resultset ermöglicht. Solche Anwendungen können auch die Leistung erhöhen, indem mehrere Datenzeilen gleichzeitig abgerufen werden, indem sie den sogenannten Blockcursor verwenden. Weitere Informationen zu Blockcursorn finden Sie unter Verwenden von Blockcursorn.

Der Vorwärtscursor ist der Standardcursortyp in ODBC und wird in den folgenden Abschnitten erläutert. Weitere Informationen zu Blockcursorn und Bildlaufcursorn finden Sie unter "Cursor blockieren" und "Scrollbare Cursor".

Wichtig

Commit oder Rollback einer Transaktion, entweder durch explizites Aufrufen von SQLEndTran oder durch Ausführen im Automatischen Commit-Modus, bewirkt, dass einige Datenquellen alle Cursor für alle Anweisungen in einer Verbindung schließen. Weitere Informationen finden Sie unter den attributen SQL_CURSOR_COMMIT_BEHAVIOR und SQL_CURSOR_ROLLBACK_BEHAVIOR in der SQLGetInfo-Funktionsbeschreibung .