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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » Embedded SQL » Beispielprogramme mit Embedded SQL

 

Beispiel für dynamischen Cursor

Dieses Beispiel veranschaulicht, wie Cursor für eine Dynamic SQL-SELECT-Anweisung verwendet werden.

Das dynamische Cursor-Beispielprogramm (dcur) erlaubt dem Benutzer, eine Tabelle auszuwählen, die er anschauen möchte. Das Programm zeigt dann so viele Informationen aus dieser Tabelle an, wie auf den Bildschirm passen.

Wenn dieses Programm ausgeführt wird, werden Sie zur Eingabe einer Verbindungszeichenfolge aufgefordert. Im Folgenden finden Sie ein Beispiel.

UID=DBA;PWD=sql;DBF=demo.db

Das C-Programm mit dem Embedded SQL-Code befindet sich im Verzeichnis %SQLANYSAMP16%\SQLAnywhere\C. Unter Windows Mobile befindet sich ein dynamisches Cursorbeispiel im Verzeichnis \SQLAnywhere\CE\esql_sample.

Das dcur-Programm verwendet die Embedded SQL-Schnittstellenfunktion db_string_connect, um eine Verbindung mit der Datenbank herzustellen. Diese Funktion liefert die zusätzliche Funktionalität, um die Zeichenfolge für die Verbindung zu unterstützen, die benutzt wird, um die Verbindung zur Datenbank herzustellen.

Die Routine open_cursor baut zuerst die SELECT-Anweisung auf:

SELECT * FROM table-name

Dabei gilt: Tabellenname ist der Parameter, der an die Routine übergeben wird. Dann bereitet sie eine Dynamic SQL-Anweisung mithilfe dieser Zeichenfolge vor.

Die Embedded SQL-Anweisung DESCRIBE wird benutzt, um die Ergebnisse der SELECT-Anweisung in die SQLDA-Struktur zu schreiben.

Hinweis

Zu Beginn wird die Größe der SQLDA geschätzt (3). Ist das nicht groß genug, wird die tatsächliche Größe der Auswahlliste, die vom Datenbankserver zurückgegeben wurde, benutzt, um eine SQLDA der richtigen Größe zuzuweisen.

Die SQLDA-Struktur wird dann mit Puffern gefüllt, die Zeichenfolgen enthalten, die wiederum für das Ergebnis der Abfrage stehen. Die Routine fill_s_sqlda konvertiert alle Datentypen in der SQLDA in DT_STRING und weist Puffer der passenden Größe zu.

Dann wird für diese Anweisung ein Cursor deklariert und geöffnet. Die übrigen Routinen zum Bewegen und Schließen des Cursors sind die gleichen wie beim vorhergehenden Beispiel.

Die Routine fetch sieht etwas anders aus: Sie setzt die Ergebnisse in die SQLDA-Struktur und nicht in eine Liste von Hostvariablen. Die print-Routine ist leicht verändert, um Ergebnisse aus der SQLDA-Struktur bis zur vollen Bildschirmbreite auszugeben. Die print-Routine benutzt auch die Namenfelder des SQLDA-Bereichs, um Überschriften für die Spalten auszugeben.

 Siehe auch