Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere ODBC-API » Mit Ergebnismengen arbeiten

 

ODBC-Cursormerkmale wählen

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 [external link] SQLSetStmtAttr in der Microsoft-Dokumentation ODBC Programmer's Reference.

Beispiel

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 );