Kapitel 7: ADO-Programmierung
OLE DB definiert eine Reihe von Interfaces, die auf dem Microsoft Component Object Model (COM)
basieren. Diese Interfaces kapseln die eigentliche Grundfunktionalität für den Zugriff auf unterschiedliche
Datenquellen (relationale und/oder objektorientierte).
Die Active Data Objects (ADO) bauen auf diesem Modell auf und bieten dem Anwendungsprogrammierer
eine objektorientierte Schnittstelle, die im Gegensatz zu den recht unflexiblen DAO mit relativ wenigen
Objekten auskommt.
Eine Besonderheit stellt der MSDataShape-Provider dar, der aufbauend auf dem OLEDB-Treiber (aber un-
abhängig davon) die Grundfunktionalität für hierarchische Recordsets bereitstellt. Damit wird auch klar,
warum sich hierarchische Recordsets nur mit clientseitigen Cursorn realisieren lassen: Die Grundfunk-
tionalität dazu wird lediglich auf dem Clientrechner bereitgestellt, die Daten müssen zwangsläufig auf dem
Client verwaltet werden.
Auf der Anwendungsebene finden sich die Microsoft-Programmiersprachen: Visual Basic, Java, VBScript,
JavaScript und C/C++.
ADO-Objektmodell
Die für uns zunächst wichtigsten Objekttypen der ADO-Bibliothek zeigt die folgende Abbildung:
Connection
Command
Recordset
Properties
Parameters PropertiesErrors
Fields
Properties
Properties
Abbildung 7.3 Das ADO-Objektmodell
(vereinfacht)
Auf der obersten Ebene der sehr flachen Hierarchie befinden sich gleichberechtigt das Connection-,
Command- und Recordset-Objekt. Diese Objekte verfügen über untergeordnete Auflistungen.
Es folgt zunächst nur eine kurze überblicksartige Beschreibung der Objekte. Zur detaillierten Anwendung
kommen wir erst im Mittelteil dieses Kapitels. Eine (fast) vollständige Zusammenfassung aller Eigenschaf-
ten, Methoden und Ereignisse finden Sie im Übersichtsteil dieses Kapitels (Seite 395).
Connection-Objekt
Über dieses Objekt stellen Sie eine Verbindung zur Datenquelle her. Mit seinen Eigenschaften legen Sie z.B.
den Provider, den Cursortyp, die Standarddatenbank und das Verbindungszeitlimit (Timeout) fest. Das
366
HINWEIS
Connection-Objekt stellt auch Mechanismen zum Ausführen von Commands und zum Verwalten von
Transaktionen bereit.
Command-Objekt
Dieses Objekt ist optional und muss von einem OLE DB-Provider nicht unbedingt zur Verfügung gestellt
werden, denn ein Recordset können Sie auch ohne Command-Objekt öffnen (siehe Beispiel Seite 363).
Das Command-Objekt kapselt die Informationen zu einem Befehl, wie zum Beispiel eine SQL-Anweisung,
Parameterdefinitionen etc. Die Art der zulässigen Kommandos ist letztlich vom Provider abhängig. Kom-
mandos können auch vom Provider vorkompiliert werden, sodass sie schneller ablaufen, was sich vor allem
bei parametrierten SQL-Abfragen und mehrfach benutzten Kommandos lohnt.
Recordset-Objekt
Ein Recordset-Objekt repräsentiert eine bestimmte Menge von Datensätzen (Zeilen) und Feldern (Spalten),
wie sie im Allgemeinen aus einer Datenbankabfrage resultieren (einschließlich eines Cursors für diese
Zeilen), und erlaubt deren Bearbeitung. Das Recordset-Objekt stellt auch Methoden und Eigenschaften be-
reit, mit denen Sie den Cursortyp festlegen und sich durch die Datenmenge bewegen können.
Allerdings können Sie keine Felder hinzufügen oder entfernen, da die Struktur eines durch eine Abfrage er-
mittelten Datensatzes feststehend ist und nicht verändert werden kann.
Etwas anders verhält es sich bei den ungebundenen Recordsets, die nicht aus einer Abfrage resultieren. Deren
Struktur können Sie über die Fields-Collection des Recordset festlegen, siehe dazu das Beispiel »Ungebun-
dene ADO-Recordsets erzeugen« im Praxisteil von Kapitel 12 (XML).
Properties-Auflistung
Jedes der ADO-Hauptobjekte beinhaltet Properties, eine Collection von Property-Objekten. Ein Property-
Objekt versetzt ADO in die Lage, sich dynamisch an verschiedene Provider anzupassen. Dies ist umso wich-
tiger, weil bei weitem nicht alle Provider über dieselbe Funktionalität verfügen und man vermeiden möch-
te, dass das ADO-Objektmodell mit Eigenschaften überfrachtet wird, die man nur in wenigen Fällen
benötigt.
Verwechseln Sie die in einem Property-Objekt gespeicherten Eigenschaften nicht mit den »normalen« Objekt-
eigenschaften, wie Sie sie bislang kennen und über die auch jedes ADO-Objekt verfügt. Letztere sind integrale Eigenschaften
und nicht Bestandteil der Properties-Auflistung, in welcher nur die dynamischen Eigenschaften enthalten sind
Errors-Auflistung
In einem (nur einer Connection zugeordneten) Error-Objekt finden Sie erweiterte Informationen zu den bei
ADO-Operationen aufgetretenen Fehlern und Fehlerbedingungen, die vom Datenprovider ausgelöst wur-
den. Es ist mit dem Err-Objekt von VBA vergleichbar. In der Errors-Auflistung können mehrere Fehler ent-
halten sein.
367
Ein erster Blick auf ADO

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.