In der Informatik umfasst Microsofts ActiveX Data Objects ( ADO ) eine Reihe von COM - Objekten ( Component Object Model ) für den Zugriff auf Datenquellen. Als Teil von MDAC (Microsoft Data Access Components) bildet ADO eine Middleware- Schicht zwischen Programmiersprachen und OLE DB (einer Methode zum einheitlichen Zugriff auf Datenspeicher, unabhängig davon, ob es sich um Datenbanken handelt oder nicht). Mit ADO können Entwickler Programme schreiben, die auf Daten zugreifen, ohne die Implementierung der Datenbank zu kennen; die Kenntnis der Datenbank ist lediglich für die Verbindungsherstellung erforderlich. Für den Datenbankzugriff mit ADO sind keine SQL- Kenntnisse notwendig, obwohl SQL-Befehle auch direkt mit ADO ausgeführt werden können (was jedoch eine Abhängigkeit vom verwendeten Datenbanktyp mit sich bringt).
Microsoft stellte ADO im Oktober 1996 vor und positionierte die Software als Nachfolger der früheren Objektschichten von Microsoft für den Zugriff auf Datenquellen, einschließlich RDO (Remote Data Objects) und DAO (Data Access Objects).
ADO besteht aus vier Sammlungen und zwölf Objekten.
ADO-Kollektionen
- Felder
- Diese Sammlung enthält eine Reihe von Feldobjekten. Die Sammlung kann entweder in einem Recordset-Objekt oder in einem Record-Objekt verwendet werden. In einem Recordset-Objekt entspricht jedes Feldobjekt der Sammlung „Felder“ einer Spalte dieses Recordset-Objekts. In einem Record-Objekt kann ein Feld eine absolute oder relative URL sein, die auf einen baumstrukturierten Namensraum verweist (verwendet für semistrukturierte Datenanbieter wie den Microsoft OLE DB Provider für Internet Publishing) oder als Referenz auf das dem Record-Objekt zugeordnete Standard-Stream-Objekt dient.
- Eigenschaften
- Ein Objekt kann mehrere Property-Objekte besitzen, die in der Properties-Sammlung des Objekts enthalten sind.
- Parameter
- Ein Befehlsobjekt kann mehrere Parameterbefehle besitzen, um sein vordefiniertes Verhalten zu ändern. Jedes dieser Parameterobjekte ist in der Parametersammlung des Befehlsobjekts enthalten.
- Fehler
- Alle vom Anbieter erzeugten Fehler werden an eine Sammlung von Fehlerobjekten übergeben, die selbst in einem Verbindungsobjekt enthalten ist. Wenn eine ADO-Operation einen Fehler erzeugt, wird die Sammlung geleert und eine neue Gruppe von Fehlerobjekten in der Sammlung erstellt.
ADO-Objekte
- Verbindung
- Das Verbindungsobjekt stellt die Verbindung von ADO zu einem Datenspeicher über OLE DB dar. Es speichert Informationen über die Sitzung und stellt Methoden zum Herstellen einer Verbindung zum Datenspeicher bereit. Da einige Datenspeicher unterschiedliche Methoden zum Verbindungsaufbau verwenden, werden manche Methoden für bestimmte OLE DB-Anbieter im Verbindungsobjekt möglicherweise nicht unterstützt. Ein Verbindungsobjekt stellt die Verbindung zum Datenspeicher mithilfe seiner Methode „Open“ und einer Verbindungszeichenfolge her, die die Verbindung als Liste von Schlüssel-Wert-Paaren spezifiziert (z. B.: „Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';“). Der Anfang dieser Verbindungszeichenfolge muss den Typ der vom Verbindungsobjekt benötigten Datenspeicherverbindung angeben.
- ein OLE DB-Provider (z. B. SQLOLEDB), unter Verwendung der Syntax "provider=";
- ein Dateiname, wobei die Syntax "Dateiname=";
- ein Remote-Anbieter und -Server (siehe RDS), wobei die Syntax "Remote-Anbieter=" und "Remote-Server="; oder
- eine absolute URL, wobei die Syntax "URL=" verwendet wird
- Befehl
- Nachdem das Verbindungsobjekt eine Sitzung zur Datenquelle hergestellt hat, werden Anweisungen über das Befehlsobjekt an den Datenanbieter gesendet. Das Befehlsobjekt kann SQL-Abfragen direkt über die Eigenschaft „CommandText“ an den Anbieter senden, parametrisierte Abfragen oder gespeicherte Prozeduren über ein Parameterobjekt oder eine Parametersammlung übermitteln oder eine Abfrage ausführen und die Ergebnisse über die Methode „Execute“ an ein Dataset-Objekt zurückgeben. Das Befehlsobjekt bietet darüber hinaus weitere Methoden, die sich auf andere Objekte wie Stream-, RecordSet- oder Verbindungsobjekte beziehen.
- Recordset
- Ein Recordset ist eine Gruppe von Datensätzen und kann entweder aus einer Basistabelle stammen oder das Ergebnis einer Abfrage dieser Tabelle sein. Das RecordSet-Objekt enthält eine Fields- und eine Properties-Collection. Die Fields-Collection ist eine Menge von Field-Objekten, die den Spalten der Tabelle entsprechen. Die Properties-Collection ist eine Menge von Property-Objekten, die eine bestimmte Funktionalität eines OLE DB-Providers definieren. Das RecordSet verfügt über zahlreiche Methoden und Eigenschaften zur Untersuchung der darin enthaltenen Daten. Datensätze im Recordset können aktualisiert werden, indem die Werte im Datensatz geändert und anschließend die Update- oder UpdateBatch-Methode aufgerufen wird.
- Sofort
- Der Datensatz wird mithilfe der adLockOptimistic- oder adLockPessimistic-Sperre gesperrt. Die Daten werden in der Datenquelle aktualisiert, nachdem der Datensatz geändert und die Update-Methode aufgerufen wurde.
- Charge
- Der Datensatz wird mithilfe von adLockBatchOptimistic gesperrt. Bei jedem Aufruf von Update werden die Daten in einem temporären Puffer aktualisiert. Erst beim Aufruf von UpdateBatch werden die Daten vollständig an die Datenquelle zurückgeschrieben. Dies hat den Vorteil, dass die gesamte Verarbeitung im Arbeitsspeicher erfolgt. Tritt ein Problem auf, wird UpdateCancel aufgerufen, und die Aktualisierungen werden nicht an die Datenquelle gesendet.
- Transaktion
- Sofern der OLE DB-Provider dies zulässt, können Transaktionen verwendet werden. Um eine Transaktion zu starten, ruft der Programmierer die Methode `BeginTrans` auf und führt die erforderlichen Aktualisierungen durch. Nach Abschluss aller Aktualisierungen ruft er die Methode `CommitTrans` auf. Mit `RollbackTrans` können alle innerhalb der Transaktion vorgenommenen Änderungen rückgängig gemacht und die Datenbank auf den Zustand vor Beginn der Transaktion zurückgesetzt werden.
- Aufzeichnen
- Dieses Objekt repräsentiert einen Datensatz in der Datenbank und enthält eine Sammlung von Feldern. Ein RecordSet besteht aus einer Sammlung von Record-Objekten.
- Strom
- Ein Datenstrom, der hauptsächlich in einem RecordSet-Objekt verwendet wird, dient zum Lesen und Schreiben eines Byte-Streams. Er wird vorwiegend verwendet, um ein Recordset im XML-Format zu speichern, Befehle an einen OLE DB-Provider zu senden (alternativ zum CommandText-Objekt) und den Inhalt einer Binär- oder Textdatei zu speichern.
- Parameter
- Ein Parameter ist ein Mittel, um das Verhalten einer gemeinsamen Funktionalität zu verändern. So können beispielsweise einer gespeicherten Prozedur je nach auszuführender Aktion unterschiedliche Parameter übergeben werden; diese werden parametrisierte Befehle genannt.
- Feld
- Jedes Record-Objekt enthält mehrere Felder, und ein RecordSet-Objekt besitzt ebenfalls ein entsprechendes Field-Objekt. Das Field-Objekt des RecordSet-Objekts entspricht einer Spalte in der Datenbanktabelle, auf die es verweist.
- Eigentum
- Dieses Objekt ist spezifisch für den OLE DB-Provider und definiert eine vom Provider implementierte Funktion. Ein Eigenschaftsobjekt kann entweder eine integrierte Eigenschaft sein – eine von ADO bereits implementierte, wohldefinierte Eigenschaft, die nicht geändert werden kann – oder eine dynamische Eigenschaft, die vom zugrunde liegenden Datenprovider definiert und geändert werden kann.
- Fehler
- Tritt während der Verwendung von ADO ein OLE-DB-Providerfehler auf, wird ein Fehlerobjekt in der Fehlersammlung erstellt. Andere Fehler werden jedoch nicht in einem Fehlerobjekt gespeichert. Beispielsweise werden alle Fehler, die bei der Datenmanipulation in einem RecordSet- oder Field-Objekt auftreten, in einer Status-Eigenschaft gespeichert.
Grundlegende Verwendung
Um mit ADO auf Daten zugreifen und diese bearbeiten zu können, sind einige grundlegende Schritte erforderlich:
- Erstellen Sie ein Verbindungsobjekt, um eine Verbindung zur Datenbank herzustellen.
- Um Daten zu empfangen, erstellen Sie ein Recordset-Objekt.
- Verbindung öffnen
- Das Recordset wird gefüllt, indem es geöffnet und der gewünschte Tabellenname oder die gewünschte SQL-Anweisung als Parameter an die Funktion open übergeben wird .
- Führen Sie alle gewünschten Such- und Verarbeitungsvorgänge an den abgerufenen Daten durch.
- Übernehmen Sie die Änderungen, die Sie an den Daten vorgenommen haben (falls vorhanden), indem Sie die Methoden Update oder UpdateBatch verwenden .
- Schließen Sie den Datensatz
- Schließe die Verbindung.
ASP-Beispiel
Hier ist ein ASP- Beispiel, das ADO verwendet, um das Feld "Name" aus einer Tabelle namens "Phonebook" auszuwählen, in der eine "PhoneNumber" gleich "555-5555" war.
Dim myconnection , myrecordset , name Set myconnection = server.createobject ( " ADODB.Connection " ) Set myrecordset = server.createobject ( " ADODB.Recordset " )myconnection.open mydatasource myrecordset.open " Phonebook " , myconnection myrecordset.find " PhoneNumber = ' 555-5555 ' " name = myrecordset.fields.item ( " Name " ) myrecordset.closeset myrecordset = nothing set myconnection = nothingDies entspricht dem folgenden ASP-Code, der jedoch einfaches SQL anstelle der Funktionalität des Recordset-Objekts verwendet:
Dim myconnection , myrecordset , name Set myconnection = server.createobject ( "ADODB.connection" ) myconnection.open mydatasource Set myrecordset = myconnection.execute ( " SELECT Name FROM Phonebook WHERE PhoneNumber = ' 555-5555 ' " ) name = myrecordset ( 0 )Softwareunterstützung
ADO wird in allen Entwicklungssprachen unterstützt, die die Anbindung an binäre COM-Schnittstellen ermöglichen. Dazu gehören ASP, Delphi , PowerBuilder und Visual Basic for Applications (VBA). ADO-Unterstützung wurde nun in dBase Plus 8 (mit ADO) integriert.
Vermächtnis
ADO.NET hat ADO ähnlich abgelöst, wie C#/.NET C/Win32 als primäre Technologie für die Windows-Anwendungsentwicklung ersetzt hat. ADO.NET folgt demselben Entwurfsmuster wie ADO und ermöglicht ADO-Entwicklern so einen einfachen Umstieg auf das .NET Framework.
Siehe auch
Referenzen
Externe Links
- Microsoft ADO-Seite
- Datenbankverbindungszeichenfolgen. Archiviert am 26. Januar 2021 in der Wayback Machine .
- DevGuru ADO Kurzübersicht