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) » UltraLite - C- und C++-Programmierung » Anwendungsentwicklung » Anwendungen mit Embedded SQL entwickeln

 

Embedded SQL-Beispiel

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.

Initialisierung

Der obige Beispielcode veranschaulicht Initialisierungsanweisungen, die einbezogen werden müssen, bevor die Daten in der UltraLite-Datenbank bearbeitet werden:

  1. 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.

  2. 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.

  3. Sie müssen mit der Anweisung SQL CONNECT eine Verbindung zur UltraLite-Datenbank herstellen.

Programmende vorbereiten

Der oben genannte Beispielcode veranschaulicht die Sequenz von Aufrufen, die erforderlich sind, um das Programm zu beenden:

  1. Schreiben Sie noch ausstehende Änderungen fest oder setzen Sie sie zurück.

  2. Trennen Sie die Verbindung zur Datenbank.

  3. 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.

Fehlerbehandlung

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