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

SQL Anywhere 12.0.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. Es ist eine leichte Änderung des vorangehenden Beispiels. Das oben beschriebene Beispiel für statische Cursor bildet die Verständnisgrundlage für das folgende Beispiel. Siehe Beispiel für statischen Cursor.

Wo der Quellcode zu finden ist und wie Sie dieses Beispielprogramm kompilieren, finden Sie unter Beispielprogramme mit Embedded SQL.

Das Programm dcur erlaubt dem Benutzer, mit dem n-Befehl 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, erwartet es eine Zeichenfolge für die Verbindung der Form:

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

Das C-Programm mit dem Embedded SQL-Code befindet sich im Verzeichnis Beispielverzeichnis\SQLAnywhere\C. Unter Windows Mobile befindet sich ein dynamisches Cursorbeispiel im Verzeichnis Beispielverzeichnis\SQLAnywhere\CE\esql_sample. Abgesehen von den Funktionen connect, open_cursor und print gleicht das Programm weitgehend dem vorigen Beispiel.

Die Funktion connect benutzt die Embedded SQL-Schnittstellenfunktion db_string_connect, um die Verbindung zur 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 Tabellenname

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.

Größe der SQLDA

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.