Embedded SQL ist eine Umgebung, die eine Kombination aus C/C++-Programmcode und Pseudocode darstellt. Der Pseudocode, der mit traditionellem C/C++-Code durchsetzt sein kann, ist eine Teilmenge von SQL-Anweisungen. Ein Präprozessor konvertiert die Embedded SQL-Anweisungen in Funktionsaufrufe, die Teil des tatsächlichen Codes sind, der zur Erstellung der Anwendung kompiliert wird.
Es folgt ein sehr einfaches Beispiel für ein Embedded SQL-Programm. Es veranschaulicht die Aktualisierung einer UltraLite-Datenbank, indem der Nachname von Mitarbeiter 195 geändert wird.
#include <stdio.h> EXEC SQL INCLUDE SQLCA; main( ) { db_init( &sqlca ); EXEC SQL WHENEVER SQLERROR GOTO error; EXEC SQL CONNECT "DBA" IDENTIFIED BY "sql"; EXEC SQL UPDATE employee SET emp_lname = 'Johnson' WHERE emp_id = 195; EXEC SQL COMMIT; EXEC SQL DISCONNECT; db_fini( &sqlca ); return( 0 ); error: printf( "update unsuccessful: sqlcode = %ld\n", sqlca.sqlcode ); return( -1 ); } |
Dieses Beispiel ist zwar zu einfach, um tatsächlich verwendet werden zu können, doch es veranschaulicht folgende Aspekte, die für alle Embedded SQL-Anwendungen gleichermaßen gelten:
Jede SQL-Anweisung beginnt mit den Schlüsselwörtern EXEC SQL.
Jede SQL-Anweisung endet mit einem Strichpunkt.
Einige Embedded SQL-Anweisungen sind in Standard-SQL nicht enthalten. Ein Beispiel ist die Anweisung INCLUDE SQLCA.
Zusätzlich zu SQL-Anweisungen stellt Embedded SQL auch Bibliotheksfunktionen für die Ausführung einiger spezifischer Aufgaben bereit. Die Funktionen db_init und db_fini sind zwei Beispiele von Aufrufen von Bibliotheksfunktionen.
Der obige Beispielcode veranschaulicht Initialisierungsanweisungen, die einbezogen werden müssen, bevor die Daten in der UltraLite-Datenbank bearbeitet werden:
Legen Sie den SQL-Kommunikationsbereich (SQLCA) mit folgendem Befehl fest:
EXEC SQL INCLUDE SQLCA; |
Diese Definition muss die erste Embedded SQL-Anweisung sein. Der logische Platz für den Befehl ist das Ende der Include-Liste.
Wenn Ihre Anwendung über mehrere .sqc-Dateien verfügt, muss diese Zeile in jeder der Dateien enthalten sein.
Die erste Aktion im Datenbankprogramm muss der Aufruf der Embedded SQL-Bibliotheksfunktion db_init sein. Diese Funktion initialisiert die UltraLite-Laufzeitbibliothek. Vor diesem Aufruf dürfen nur Embedded SQL-Definitionsanweisungen ausgeführt werden.
Weitere Hinweise finden Sie unter db_init-Funktion.
Sie müssen mit der Anweisung SQL CONNECT eine Verbindung zur UltraLite-Datenbank herstellen.
Der oben genannte Beispielcode veranschaulicht die Sequenz von Aufrufen, die erforderlich sind, um das Programm zu beenden:
Schreiben Sie noch ausstehende Änderungen fest oder setzen Sie sie zurück.
Trennen Sie die Verbindung zur Datenbank.
Beenden Sie Ihre SQL-Arbeit mit einem Aufruf der Bibliotheksfunktion db_fini.
Wenn Sie das Programm beenden, werden alle noch nicht festgeschriebenen Datenbankänderungen automatisch zurückgesetzt.
Es gibt praktisch keine Interaktion zwischen dem SQL- und dem C-Code in diesem Beispiel. Der C-Code steuert nur den Datenfluss des Programms. Die Anweisung WHENEVER wird zur Fehlerprüfung verwendet. Die Fehleraktion, in diesem Beispiel GOTO, wird immer ausgeführt, wenn eine SQL-Anweisung einen Fehler verursacht.
Struktur von Embedded SQL-Programmen
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 |