Next: Entity-Relationship Modell
Up: Einführung
Previous: Dynamisches SQL
ODBC (Open Database Connectivity) [ODBC94] ist eine von Microsoft definierte Programmierschnittstelle für den Zugriff von Programmen auf Datenbanken mittels SQL. Für den Programmierer ist ODBC eine Funktionsbibliothek, bei deren Verwendung es nicht notwendig ist, das Programm mit einem Precompiler zu übersetzen oder eine neue Sprache wie Embedded SQL zu lernen (dafür aber eine Funktionsbibliothek). Weitere Vorteile von ODBC sind die Unterstützung durch mehrere Hersteller auf mehreren Plattformen und die Transparenz bezüglich der Netzverbindung.
Die Architektur von ODBC hat vier Komponenten (siehe Abbildung ):
- das Programm, das die Daten bearbeitet und über ODBC-Aufrufe SQL-Anweisungen an die Datenbank schickt;
- der Treiber-Manager, der den entsprechenden Datenbanktreiber bei Bedarf nachlädt;
- der Datenbanktreiber, der die ODBC-Aufrufe bearbeitet, SQL-Befehle an das Datenbanksystem schickt und die Ergebnisse zurückgibt und
- die Datenquelle, die in der Regel ein Datenbanksystem ist.
Figure: Architektur von ODBC
Eine Anwendung kann somit mit denselben Befehlen Daten von beliebige Datenbanken (für die es einen ODBC-Treiber gibt) auslesen, ändern und löschen. Diese Unabhängigkeit bezeichnet man unter anderem als Interoperabilität (weil die Anwendung mit beliebigen Datenbanken zusammenarbeiten kann).
ODBC definiert bestimmte Konformitätsebenen (conformance levels) in Bezug auf das unterstützte ODBC API und die unterstützte SQL-Grammatik.
Die Grundmenge der ODBC-Funktionen entspricht den Funktionen in der X/Open und SQL Access Group Call Level Interface-Spezifikation und umfaßt:
- Anlegen und Freigeben von Hilfszeigern (handles) für das Environment, für Verbindungen und Anweisungen
- Aufbauen der Verbindungen zu Datenquellen
- Vorbereiten und Ausführen von SQL-Anweisungen, direktes Ausführen von SQL-Anweisungen
- Zuweisen von Speicherbereichen für die Datenkommunikation (Parameter und Ergebnismenge)
- Auslesen der Typinformation über die Datensätze der Ergebnismenge einer SQL-Anweisung und Auslesen der Datensätze selber
- Verwalten von Transaktionen (Commit und Rollback)
- Abfragen der Fehlerinformation
Die erste Konformitätsebene (Level 1 API) umfaßt zusätzlich:
- Aufbauen der Verbindung mit treiberspezifischen Dialogboxen
- Abfragen und Setzen von Anweisungs- und Verbindungsoptionen
- Schrittweises Senden von Parameterwerten (für lange Daten)
- Schrittweises Empfangen von Ergebnissen (für lange Daten)
- Erfragen von Kataloginformationen (über Tabellen, Spalten von Tabellen, spezielle Spalten und Statistiken)
- Abfragen von Fähigkeiten des Datentreibers und der Datenquelle wie unterstützte Datentypen, skalare Funktionen und ODBC-Funktionen
Die zweite Konformitätsebene (Level 2 API) umfaßt schließlich noch:
- Auflisten der Informationen über eine Verbindung und über verfügbare Datenquellen
- Blockweises Senden von Parameterwerten
- Abfragen der Anzahl der Parameter einer SQL-Anweisung und Erfragen der Typinformation der Parameter
- Cursor zum datensatzweisen Auslesen der Ergebnismenge
- Abfragen der datenbankspezifischen Form einer SQL-Anweisung
- Erfragen erweiterter Kataloginformation (über Privilegien, Schlüssel und Prozeduren)
- Aufrufen einer DLL zur Datenkonversion
Die minimale SQL-Grammatik umfaßt:
- Befehle zur Datendefinition: CREATE TABLE und DROP TABLE
- Befehle zur Datenmanipulation: einfache Form des SELECT, INSERT, UPDATE (mit Suchbedingung) und DELETE (mit Suchbedingung)
- einfache Ausdrücke (wie zum Beispiel A
>
B + C)
- die Datentypen CHAR und VARCHAR oder LONG VARCHAR
Von den meisten Datenbanktreibern werden zusätzlich angeboten:
- weitere Befehle zur Datendefinition: ALTER TABLE, CREATE INDEX, DROP INDEX, CREATE VIEW, DROP VIEW, GRANT und REVOKE
- erweiterter Befehl zur Datenmanipulation: SELECT mit GROUP und HAVING
- komplexere Ausdrücke wie Unterabfragen und mengenwertige Funktionen wie SUM und MIN
- weitere Datentypen: DECIMAL, NUMERIC, SMALLINT, INTEGER, REAL, FLOAT und DOUBLE PRECISION
Die vollständige SQL-Grammatik umfaßt schließlich noch:
- weitere Befehle zur Datenmanipulation: äußerer Verbund (outer join), positioniertes UPDATE, positioniertes DELETE, SELECT FOR UPDATE und Vereinigungen von Ergebnismengen
- skalare Funktionen wie SUBSTRING, ABS und Konstanten für die Datentypen Date, Time und Timestamp in Ausdrücken
- weitere Datentypen: BIT, TINYINT, BIGINT, BINARY, VARBINARY, LONG VARBINARY, DATE, TIME und TIMESTAMP
- Prozeduraufrufe
Die meisten Funktionen der ODBC-Schnittstelle lassen sich in einfacher Weise auf die Konstrukte von Embedded SQL abbilden. ODBC verwendet allerdings anstelle von Hostvariablen Parameter-Platzhalter.
In [ODBC94] findet man eine detaillierte Gegenüberstellung der Konstrukte von Embedded SQL und der Funktionen von ODBC, die einem Anwendungsprogrammierer das Umsteigen auf die jeweils andere Art erleichtert.
Next: Entity-Relationship Modell
Up: Einführung
Previous: Dynamisches SQL
Christoph Steindl
Thu Jul 24 14:37:19 MET DST 1997