gif gif up gif contents
Nächste Seite: Datenbankunterstützung für objekt-orientierte Applikationen Vorige Seite: 3.1.1 Programmierschnittstelle für Sybase

3.1.2 Der ODBC-Standard

Die Open Database Connectivity (ODBC) Schnittstelle [MS94] erlaubt Applikationsprogrammen den Zugriff auf die Daten eines Datenbankmanagementsystems. Die Schnittstelle wurde 1992 von Microsoft mit der Unterstützung von einigen Datenbankherstellern entwickelt. ODBC setzte sich schnell als Standard durch und ist mittlerweile für die Betriebssysteme Microsoft Windows (95/NT), IBM OS/2, Macintosh OS und Sun Solaris verfügbar. Die Datenbank kann bei dieser Schnittstelle eine einfache Textdatei sein oder aber auch ein vollständiges DBMS in Client/Server-Architektur. Einen Überblick über die Architektur der ODBC-Schnittstelle gibt Abbildung 3.1

  
Abbildung 3.1: Überblick über die ODBC-Architektur

Die Applikationsprogramme fordern über den ODBC-Treiber-Manager die Dienste eines ODBC-Treibers an. Der ODBC-Treiber-Manager ist ein Bestandteil des Betriebssystems und verwaltet die verschiedenen ODBC-Treiber für das Betriebssystem. Die Treiber stellen Bibliotheken dar, die zur Laufzeit dynamisch geladen werden können. Für jedes Datenformat bzw. DBMS gibt es einen eigenen Treiber, der oft von den Datenbankherstellern zur Verfügung gestellt wird. Über die Programmierschnittstelle des Treiber-Managers stellt die Applikation Anfragen in SQL an ein Datenbanksystem. Der Treiber-Manager leitet die Anfrage an den zuständigen Treiber weiter. Die Treiber setzen dann die SQL-Befehle der Applikation in entsprechende Datenbankbefehle um und berücksichtigen dabei zum Beispiel spezielle SQL-Dialekte. Die einheitliche Schnittstelle ermöglicht die Programmierung einer Anwendung unabhängig von dem benutzten DBMS.

Die Struktur eines Anwendungsprogramms, das die ODBC-Schnittstelle benutzt, ist ähnlich zu der von Programmen für den Sybase SQL Server: das Anwendungsprogramm baut die Verbindung zu einem DBMS auf, führt eine Anfrage aus, verarbeitet die Ergebnisse und beendet die Verbindung. Die C++-Klassenbibliothek Microsoft Foundation Classes (MFC)gif enthält Klassen zur Verkapselung dieser Funktionen. Mit der Klasse CDatabase läßt sich eine Verbindung zu einem DBMS herstellen, die Klasse CRecordset stellt eine Anfrage an das DBMS und verwaltet die Antwort. Mit einem CRecordset-Objekt kann man in der Antwortmenge navigieren und einzelne Elemente modifizieren, falls dies die Form der Anfrage erlaubt.

Das Programm baut die Verbindung zu einem DBMS auf und stellt eine Anfrage, deren Ergebnis in einem Recordset gespeichert wird. Anschließend schreibt das Programm das Ergebnis der Anfrage auf den Bildschirm.

void print_emps() {
  // Datenbank oeffnen
  CDatabase db;
  db.Open("DSN=SybaseSQLServer",FALSE,TRUE,\"ODBC;UID=quix");
  
  // RecordSet initialisieren
  EmployeeRecordSet rs(&db);
  rs.Open(CRecordset::snapshot,
          "Select Name,Salary from Employee where Salary > 100000");

  // Ergebnis ausgeben
  rs.MoveFirst();
  while(!rs.IsEOF()) {
    rs.DoFieldExchange();
    cout << rs.name << " verdient " rs.salary << " DM.\n";
    rs.MoveNext();
  }
}

Die Klasse EmployeeRecordSet ist von der Klasse CRecordSet abgeleitet. Sie hat zusätzlich noch die Member-Variablen name und salary und überschreibt die Methode DoFieldExchange. In dieser Methode werden die Daten aus einem Record in die Member-Variablen kopiert.

ODBC ist nicht der einzige Standard dieser Art, jedoch findet ODBC eine immer weitere Verbreitung [MMBH95]. Mittlerweile stellen viele Hersteller Werkzeuge zur einfachen Erstellung von ODBC-Applikationen her [Hü95]. Die Werkzeuge erlauben die grafische Entwicklung von Eingabeformularen und die Einbindung in beliebige Applikationsprogramme.



gif gif up gif contents

Christoph Quix
31. Juli 1996