gif gif up gif contents
Nächste Seite: 3.1.2 Der ODBC-Standard Vorige Seite: 3.1 Programmierschnittstellen für relationale

3.1.1 Programmierschnittstelle für Sybase SQL Server

Der SQL Server der Firma Sybase ist ein leistungsfähiges relationales Datenbankmanagementsystem, das für verschiedene Betriebssysteme angeboten wird. Das System hat eine Client/Server-Architektur. Als Clients können die mitgelieferten Programme des SQL Toolsets oder auch eigene Applikationen benutzt werden. Selbst erstellte Applikationen können entweder über Embedded SQL oder über die Open Client Library mit dem SQL Server kommunizieren [Syb95].

Bei Applikationen, die Embedded SQL verwenden, werden die SQL Anweisungen für den SQL Server direkt in den Quellcode als Funktionsaufrufe integriert. Bevor der Quellcode mit einem Standard-Compiler übersetzt werden kann, mußzunächst ein Precompiler die Embedded SQL Anweisungen in Funktionsaufrufe der Open Client Library umsetzen. Der Vorteil bei dieser Vorgehensweise ist, daßdas Anwendungsprogramm leichter zu schreiben und zu überprüfen ist. Allerdings kann man nicht alle Funktionen der Open Client Library nutzen.

Der Quellcode der Anwendungsprogramme, die direkt die Open Client Library verwenden, mußnicht erst vom Precompiler behandelt werden. Ein Client, der diese Bibliothek verwendet, kann auch mit anderen Servern als dem SQL Server kommunizieren. Die Server müssen dafür die Open Server Library verwenden, die eine Programmierschnittstelle für beliebige Serverprogramme bereitstellt. Mit den Bibliotheken lassen sich also nicht nur Clients für den Sybase SQL Server erstellen, sondern auch für andere Serverapplikationen.

Die Programmstruktur eines Applikationsprogramms für den SQL Server hat folgenden Aufbau:

1. Initialisierung der Client-Library:
Zunächst müssen die Strukturen initialisiert werden, die Konfigurations- und Kontextinformationen enthalten.
2. Fehlerbehandlung festlegen:
Falls während der Kommunikation mit dem SQL Server Fehler auftreten, werden vom Programmierer festgelegte Funktionen aufgerufen.
3. Verbindung zum Server aufbauen:
Hier mußangegeben werden, wo der SQL Server läuft, und welcher Login-Name und welches Password verwendet werden soll.
4. Senden eines Befehls:
Zunächst mußfür einen Befehl Speicher reserviert werden, dann kann der Befehl initialisiert werden und die Parameter können, falls nötig, spezifiziert werden. Abschließend wird der Befehl an den Server gesendet.
5. Verarbeitung der Ergebnisse:
Zuerst mußfür das Ergebnis Speicher reserviert werden. Nachdem man die Information über die Form des Ergebnisses geholt hat, können die einzelnen Tupeln der Ergebnisrelation sukzessive an Programmvariablen gebunden werden. Alternativ kann man auch mit einem Cursor in der Ergebnisrelation navigieren.
6. Verbindung abbrechen:
Die Verbindung zum Server wird abgebrochen und die vorher reservierten Speicherbereiche müssen freigegeben werden.

Interessant für die Problemstellung dieser Diplomarbeit ist Punkt 5. Die Programmvariablen haben dabei Typen, die in der Open Client Library definiert sind. Das Binden der Daten aus einem Tupel der Ergebnisrelation an Programmvariablen erfolgt durch einen Funktionsaufruf, bei dem die Speicheradressen der Variablen, der Typ der Variablen und ein Feldindex für das Tupel übergeben werden. Da es sich hier nur um einfache Relationen handelt, werden komplexe Datentypen nicht unterstützt.

In Verbindung mit einem Open Server gibt es auch einen Notifikationsmechanismus. Die Notifikation wird im Clientprogramm durch sogenannte Callback-Funktionen realisiert. Eine Callback-Funktion ist eine vom Benutzer zur Verfügung gestellte Funktion, die bei bestimmten Ereignissen aufgerufen wird. Auch die Funktionen zur Fehlerbehandlung (Punkt 2 in der Programmstruktur) sind Callback-Funktionen. Die Callback-Funktion für Notifikation wird immer dann aufgerufen, wenn der Server eine Notifikationsnachricht gesendet hat. Diese Nachricht kann im Gegensatz zu den anderen Nachrichten, wie z.B. für die Ergebnisübermittlung, zu jeder Zeit eintreffen. Sofern das Betriebssystem dies unterstützt, wird bei Empfang einer Notifikationsnachricht ein Interruptgif ausgelöst und sofort die entsprechende Funktion aufgerufen. Ansonsten mußin regelmäßigen Abständen der Kommunikationskanal nach neuen Nachrichten überprüft werden. Der Nachteil bei der Lösung mit Interrupt ist, daßinnerhalb der zugehörigen Callback-Routine die Daten des Hauptprogramms nicht einfach geändert werden können, da es sonst beim Wiedereinstieg in das Hauptprogramm zum Programmabsturz durch fehlerhafte Daten kommen kann.



gif gif up gif contents

Christoph Quix
31. Juli 1996