ODBC-Funktionen, die Anweisungen ausführen und Ergebnismengen verarbeiten, verwenden für diese Aufgaben Cursor. Anwendungen öffnen implizit einen Cursor, wenn sie die Funktion SQLExecute oder SQLExecDirect ausführen.
Bei Anwendungen, die sich nur vorwärts durch eine Ergebnismenge bewegen und sie nicht aktualisieren, ist das Cursor-Verhalten recht einfach. Standardmäßig erwarten ODBC-Anwendungen dieses Verhalten. ODBC definiert einen reinen Lesecursor, der nur vorwärts liest und SQL Anywhere liefert einen Cursor, der für diesen Fall auf Performance optimiert ist.
Ein einfaches Beispiel für einen nur vorwärts lesenden Cursor finden Sie unter Daten abrufen.
Bei Anwendungen, die sowohl vorwärts als auch rückwärts durch die Ergebnismenge blättern müssen, wie etwa Anwendungen mit grafischer Benutzeroberfläche, ist das Cursor-Verhalten komplexer. Wie reagiert die Anwendung, wenn sie eine Zeile zurückgibt, die von einer anderen Anwendung aktualisiert wurde? ODBC definiert eine Reihe von abrollenden Cursorn, damit Sie das gewünschte Verhalten in Ihre Anwendung einbauen können. SQL Anywhere liefert eine vollständige Gruppe von Cursorn die mit den abrollenden ODBC-Cursortypen übereinstimmen.
Die erforderlichen Cursor-Merkmale werden mit der Funktion SQLSetStmtAttr gesetzt, die die Anweisungsattribute definiert. Sie müssen SQLSetStmtAttr aufrufen, bevor Sie eine Anweisung ausführen, die eine Ergebnismenge erzeugt.
Viele Cursor-Merkmale können mit SQLSetStmtAttr festgelegt werden. Folgende Merkmale bestimmen den von SQL Anywhere gelieferten Cursortyp:
SQL_ATTR_CURSOR_SCROLLABLE Für einen abrollenden Cursor auf SQL_SCROLLABLE setzen und auf SQL_NONSCROLLABLE für Vorwärts-Cursor. SQL_NONSCROLLABLE ist der Standardwert.
SQL_ATTR_CONCURRENCY Auf einen der folgenden Werte setzen:
SQL_CONCUR_READ_ONLY Aktualisierungen deaktivieren. SQL_CONCUR_READ_ONLY ist der Standardwert.
SQL_CONCUR_LOCK Verwendet die niedrigste Sperrstufe, die ausreicht, um eine Zeile zu aktualisieren.
SQL_CONCUR_ROWVER Verwendet optimistische Parallelitätssteuerung, bei der Zeilenversionen verglichen werden, wie z.B. SQLBase ROWID oder Sybase TIMESTAMP.
SQL_CONCUR_VALUES Verwendet optimistische Parallelitätssteuerung, bei der Werte verglichen werden.
Weitere Hinweise finden Sie unter SQLSetStmtAttr in der Microsoft-Dokumentation ODBC Programmer's Reference.
Für das folgende Fragment ist ein abrollender Nur-Lesen-Cursor erforderlich:
SQLAllocHandle( SQL_HANDLE_STMT, dbc, &stmt ); SQLSetStmtAttr( stmt, SQL_ATTR_CURSOR_SCROLLABLE, SQL_SCROLLABLE, SQL_IS_UINTEGER ); |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |