Was ist ODBC?

In der Computerwelt gibt es viele falsche Vorstellungen von ODBC. Für den Endbenutzer ist es ein Symbol in der Microsoft Windows-Systemsteuerung. Für den Anwendungsprogrammierer ist es eine Bibliothek mit Datenzugriffsroutinen. Für viele andere ist es die Antwort auf alle erdenklichen Probleme mit dem Datenbankzugriff.

Zuallererst ist ODBC aber eine Spezifikation für eine Datenbank-API. Diese API ist unabhängig von einem DBMS oder Betriebssystem. Obwohl in diesem Handbuch C verwendet wird, ist die ODBC-API sprachunabhängig. Die ODBC-API basiert auf den CLI-Spezifikationen von Open Group und ISO/IEC. ODBC 3.x implementiert beide Spezifikationen in vollem Umfang – frühere Versionen von ODBC haben auf vorläufigen Versionen dieser Spezifikationen basiert, sie aber nicht vollständig implementiert – und fügt Features hinzu, die von Entwicklern bildschirmbasierter Datenbankanwendungen oft gebraucht werden, wie z. B. bildlauffähige Cursor.

Die Funktionen in der ODBC-API werden von Entwicklern DBMS-spezifischer Treiber implementiert. Anwendungen rufen die Funktionen in diesen Treibern auf, um DBMS-unabhängig auf Daten zuzugreifen. Ein Treiber-Manager verwaltet die Kommunikation zwischen Anwendungen und Treibern.

Obwohl Microsoft einen Treiber-Manager für Computer mit Microsoft Windows 95 und höher bereitstellt, mehrere ODBC-Treiber geschrieben hat und ODBC-Funktionen aus einigen seiner Anwendungen aufruft, können ODBC-Anwendungen und Treiber von jedem selbst geschrieben werden. Tatsächlich werden die meisten heute verfügbaren ODBC-Anwendungen und Treiber von anderen Unternehmen als Microsoft geschrieben. Darüber hinaus gibt es ODBC-Treiber und -Anwendungen auf macOS und einer Vielzahl von UNIX-Plattformen.

Als Hilfsmittel für Anwendungs- und Treiberentwickler bietet Microsoft ein ODBC Software Development Kit (SDK) für Computer mit Windows 95 und höher an, das den Treiber-Manager, die Installations-DLL, Test Tools und Beispielanwendungen enthält. Microsoft arbeitet zusammen mit Visigenic Software an der Portierung diese SDKs auf Macintosh und verschiedene UNIX-Plattformen.

Es ist wichtig zu verstehen, dass ODBC darauf ausgelegt ist, Datenbankfunktionen verfügbar zu machen und nicht zu ergänzen. Anwendungsentwickler sollten also nicht erwarten, dass eine einfache Datenbank bei Verwendung von ODBC plötzlich zu einer voll ausgestatteten relationalen Datenbank-Engine wird. Ebenso kann von Treiberentwicklern nicht erwartet werden, dass sie Funktionalitäten implementieren, die in der zugrunde liegenden Datenbank nicht zu finden sind. Eine Ausnahme besteht darin, dass Entwickler von Treibern, die direkt auf Dateidaten (z. B. Daten in einer Xbase-Datei) zugreifen, eine Datenbank-Engine schreiben müssen, die zumindest minimale SQL-Funktionen unterstützt. Eine weitere Ausnahme besteht darin, dass die ODBC-Komponente des Windows SDK, das früher im Microsoft Data Access Components (MDAC)-SDK enthalten war, über eine Cursorbibliothek verfügt, die bildlauffähige Cursor für Treiber simuliert, die einen bestimmten Funktionalitätsgrad implementieren.

Für die datenbankübergreifende Funktionalität sind die Anwendungen verantwortlich, die ODBC verwenden. ODBC ist zum Beispiel keine heterogene Verknüpfungs-Engine und kein Prozessor für verteilte Transaktionen. Da es DBMS-unabhängig ist, kann es aber zum Entwickeln solcher datenbankübergreifender Tools genutzt werden.