ODBC – Äh… was?!
ODBC … ein Begriff, über den man doch recht häufig „stolpert“, wenn man als IT-Administrator gerade im Server-Bereich tätig ist. Auch in meinen Beitrag RemoteApp 2022 – Teil 4 kam er vor. Doch was ist das und wie arbeite ich damit?
Für die Definition davon bediene ich mich mal des WikiPedia-Artikels:
Open Database Connectivity (ODBC, englisch für etwa Offene Datenbank-Verbindungsfähigkeit)
Was ist ODBC?
ODBC ist eine genormte Schnittstelle für Datenbanken, die SQL als Datenbanksprache nutzt. Sie stellt eine Programmierschnittstelle (API) bereit, mit welcher Entwickler ihre Anwendungen weitgehend unabhängig vom eingesetzten Datenbankmanagementsystem (DBMS) erstellen können, sofern ein passender ODBC-Treiber verfügbar ist.
Mit ODBC können die Verbindungsdetails zu einer Datenbank, wie der Name des Datenbankservers, der Netzwerkport, der Datenbankname, der Benutzername, das Passwort und weitere Parameter, unter einem spezifischen Namen auf dem Client gespeichert werden. Eine Client-Anwendung kann anschließend mithilfe dieses Namens auf die Datenbank zugreifen, ohne die genauen Verbindungsdetails kennen zu müssen.
Ursprünglich wurde ODBC von Microsoft basierend auf dem Call Level Interface von X/Open und ISO/IEC entwickelt. Inzwischen wurde es jedoch auch von anderen Softwareherstellern übernommen und hat sich in vielen Bereichen als Standard etabliert. ODBC-Treiber bieten verschiedene Funktionsumfänge, die in folgende Kategorien unterteilt werden:
- Core (nur grundlegende Funktionen)
- Level 1
- Level 2
Moderne Entwicklungsumgebungen ermöglichen dadurch den einfachen Zugriff auf eine Vielzahl von Datenbankverwaltungssystemen, oft über vorgefertigte datensensitive Steuerelemente. Der Zugriff erfolgt dabei nie direkt auf eine Tabelle oder Datenbank, sondern stets über die zugehörige ODBC-Komponente. Mit ODBC ist es möglich, sowohl auf lokale als auch auf entfernte Datenquellen zuzugreifen.
Für objektorientierte Programmiersprachen wie C++ oder Java stehen Klassen zur Verfügung, die Methoden für den Umgang mit den Daten verschiedener Datenbanksysteme bereitstellen. Dadurch muss sich der Programmierer nicht mehr um spezifische Details einzelner Datenbanken kümmern.
Seit Windows 2000 ist ODBC fester Bestandteil des Betriebssystems als Komponente der Microsoft Data Access Components (MDAC). Für ältere Windows-Versionen kann ODBC kostenlos nachträglich installiert werden. Im Jahr 2011 gab Microsoft bekannt, dass der Microsoft SQL Server 2012 die letzte Version mit einem OLE-DB-Provider sein würde, und empfahl für zukünftige Anwendungen die Verwendung des ODBC-Providers. Obwohl ODBC ursprünglich ausschließlich für Windows entwickelt wurde, ist die Schnittstelle mittlerweile auch für Datenbankmanagementsysteme auf Unix-Betriebssystemen verfügbar.
ODBC stellt also eine neutrale Zwischenstelle zur Kommunikation von Anwendung zur Datenbank dar. Die Webseite „Data Basecamp“ hat da eine super Grafik, die das perfekt wiedergibt:

Weblinks
- Windows: https://learn.microsoft.com/de-de/sql/odbc/microsoft-open-database-connectivity-odbc
- Linux:
Download
Mittlweile bietet Microsoft auch eine übersichtliche Download-Seite sowohl des aktuellen ODBC-Treibers als auch von älteren Versionen an (oder ich habe sie früher schlichtweg nicht gefunden 🙈).
- Aktuelle Version des ODBC Driver for SQL Server | Microsoft Learn
- Ältere Versionen des ODBC Driver for SQL Server | Microsoft Learn
Verwendung
Installation
Die Installation läuft einfach ab. Nach dem Download des benötigten MSI-Paketes einfach als Administrator ausführen und „durchklicken“.
Einrichten neuer ODBC-Verbindungen
Im Startmenü „ODBC“ eintippen und dann die gewünschte Version (32bit oder 64bit) auswählen. Welches die richtige ist, hängt davon ab, ob die Applikation, welche die ODBC-Verbindung verwenden soll, eine 32- oder 64bit-Applikation ist. Wenn das unklar ist, einfach beim Hersteller nachfragen 😉
Registry
Es gibt zudem die Möglichkeit, sich die ODBC-Verbindungen per Registry auszulesen. Falls auf einem System mehrere hinterlegt sein sollten und man die nicht alle einzeln auf ein neues System übertragen möchte, ist das eine nützliche „Abkürzung“.
Die relevanten Registry-Pfade sind:
- 32-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI
- 64-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
Für die von Benutzern angelegten ODBC-Verbindungen gibt es noch diesen Pfad:
- HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI
Wo liegt die ODBC-Application
Letztlich ist das Konfigurations-Tool für die Anlage der ODBC-Verbindungen auch nur eine Anwendung des Betriebssystems und kann hier gefunden werden:
32bit: %windir%\syswow64\odbcad32.exe
64bit: %windir%\system32\odbcad32.exe
ODBC vs. JDBC
Auf der bereits o.g. Seite Data Basecamp bin ich auch auf den Unterschied von „ODBC“ zu „JDBC“ gestoßen, den ich an dieser Stelle natürlich nicht vorenthalten möchte:
ODBC:
- ODBC ist eine C-basierte API, die plattformunabhängig ist und auf Windows-, macOS- und Linux-Systemen verwendet werden kann.
- Es wurde von Microsoft entwickelt und ermöglicht den Zugriff auf eine Vielzahl von Datenbanken, darunter Microsoft SQL Server, Oracle, MySQL und andere.
- Die Treiber müssen auf dem Client-Rechner installiert werden, um eine Verbindung zur Datenbank herzustellen.
JDBC:
- JDBC ist eine Java-basierte API, die auf jeder Plattform verwendet werden kann, die Java unterstützt.
- Es ermöglicht den Zugriff auf eine Vielzahl von Datenbanken, darunter MySQL, Oracle, Microsoft SQL Server und andere.
- JDBC-Treiber müssen auf dem Client-Rechner installiert werden, um eine Verbindung zur Datenbank herzustellen.
- In Bezug auf die Leistung ist ODBC im Allgemeinen schneller als JDBC, da es einen geringeren Overhead hat. Die Open Database Connectivity ist auch flexibler in Bezug auf die Datentypen, die es verarbeiten kann, was es zu einer besseren Wahl für einige spezialisierte Datenbanken macht. Andererseits ist JDBC einfacher zu bedienen und bietet eine bessere Unterstützung für Multithreading.
Zusammenfassend lässt sich sagen, dass die Wahl zwischen ODBC und JDBC von den spezifischen Anforderungen des Projekts abhängt. Während ODBC schneller und flexibler sein kann, ist JDBC möglicherweise einfacher zu benutzen und bietet eine bessere Unterstützung für Multithreading. Entwickler sollten beide APIs sorgfältig prüfen, bevor sie eine Entscheidung treffen.
Hiya, I’m really glad I have found this information. Nowadays bloggers publish just about gossips and internet and this is actually frustrating. A good website with exciting content, that’s what I need. Thank you for keeping this site, I’ll be visiting it. Do you do newsletters? Can not find it.
I’ve read some good stuff here. Definitely worth bookmarking for revisiting. I surprise how much effort you put to create such a fantastic informative website.