Share via


Vergleich zwischen ADO.NET und ADO

Aktualisiert: November 2007

Sie können die Features von ADO.NET analysieren, indem Sie sie mit bestimmten Features von ActiveX-Datenobjekten (ADO) vergleichen.

Darstellung von Daten im Speicher

Bei ADO werden die Daten im Speicher als Recordset dargestellt, bei ADO.NET als Dataset. Zwischen beiden gibt es bedeutende Unterschiede.

Anzahl der Tabellen

Ein Recordset sieht wie eine einzelne Tabelle aus. Wenn ein Recordset Daten aus mehreren Datenbanktabellen enthalten soll, muss eine JOIN-Abfrage verwendet werden, die die Daten aus den verschiedenen Datentabellen in einer einzigen Ergebnistabelle zusammenfasst.

Dagegen ist ein Dataset eine Auflistung einer oder mehrerer Tabellen. Die Tabellen innerhalb eines Datasets werden als Datentabellen bezeichnet; genau genommen handelt es sich dabei um DataTable-Objekte. Wenn ein Dataset Daten aus mehreren Datenbanktabellen enthält, verfügt es in der Regel über mehrere DataTable-Objekte. Das bedeutet, dass jedes DataTable-Objekt typischerweise einer einzelnen Datenbanktabelle oder -sicht entspricht. Auf diese Weise kann ein Dataset die Struktur der zugrunde liegenden Datenbank imitieren.

Ein Dataset enthält in der Regel auch Beziehungen. Eine Beziehung innerhalb eines Datasets ist analog zu einer Fremdschlüsselbeziehung, d. h., dass sie die Zeilen der Tabellen einander zuordnet. Wenn ein Dataset z. B. eine Tabelle über Investoren und eine andere Tabelle über die Aktienkäufe der einzelnen Investoren enthält, könnte das Dataset auch eine Beziehung enthalten, die jede Zeile der Investortabelle mit den entsprechenden Zeilen der Tabelle für die Aktienkäufe verknüpft.

Da das Dataset mehrere, separate Tabellen enthalten und Informationen über die Beziehungen zwischen ihnen verwalten kann, kann es viel komplexere Datenstrukturen umfassen als ein Recordset, einschließlich auf sich selbst verweisende Tabellen und Tabellen mit n:n-Beziehungen.

Datennavigation und Cursor

Bei ADO können Sie die Zeilen des Recordsets mit der ADO-Methode MoveNext sequenziell durchsuchen. Bei ADO.NET sind die Zeilen als Auflistungen dargestellt, sodass Sie eine Tabelle wie jede Auflistung durchlaufen oder über den Ordinal- oder Primärschlüsselindex auf bestimmte Zeilen zugreifen können. DataRelation-Objekte verwalten Informationen über Haupt- und Detaildatensätze und stellen eine Methode zur Verfügung, mit der Sie Datensätze abrufen können, die mit dem verwendeten Datensatz verknüpft sind. Ausgehend von der Zeile der Investor-Tabelle für "Nate Sun" z. B. können Sie zu der Gruppe von Zeilen der Purchase-Tabelle navigieren, die seine Käufe beschreibt.

Hinweis:

Windows Forms-Anwendungen stellen den BindingNavigator zum Navigieren in den Datensätzen einer Datenquelle bereit. Weitere Informationen finden Sie unter BindingNavigator-Steuerelement (Windows Forms).

Ein Cursor ist ein Datenbankelement, das die Datensatznavigation, die Aktualisierungsfähigkeit für Daten und die Sichtbarkeit von Änderungen an der Datenbank durch andere Benutzer steuert. ADO.NET enthält kein inhärentes Cursorobjekt. Stattdessen enthält es Datenklassen, die die Funktionalität eines herkömmlichen Cursors zur Verfügung stellen. Beispielsweise ist die Funktionalität eines vorwärtsgerichteten, schreibgeschützten Cursors im DataReader-ADO.NET-Objekt verfügbar.

Minimierte offene Verbindungen

In ADO.NET öffnen Sie Verbindungen nur so lange, wie eine Datenbankoperation, z. B. eine Select- oder Update-Operation, dauert. Sie können Zeilen in ein Dataset einlesen und anschließend mit ihnen arbeiten, ohne die Verbindung zur Datenquelle erhalten zu müssen. Bei ADO kann das Recordset zwar nicht verbundenen Zugriff bereitstellen, ADO ist aber primär für verbundenen Zugriff ausgelegt.

Zwischen der nicht verbundenen Verarbeitung bei ADO und der bei ADO.NET gibt es einen bedeutenden Unterschied. Bei ADO kommunizieren Sie durch Aufrufe an einen OLE DB-Anbieter mit der Datenbank. Die Kommunikation mit der Datenbank erfolgt in ADO.NET über TableAdapters oder Datenadapter (z. B. SqlDataAdapter), wobei ein OLE DB-Anbieter oder die von der zugrunde liegenden Datenquelle bereitgestellten APIs aufgerufen werden. Der wichtige Unterschied besteht darin, dass Sie mithilfe des Adapters steuern können, wie die Änderungen am Dataset an die Datenbank übermittelt werden, indem Sie die Leistung optimieren, die Daten validieren oder eine zusätzliche Verarbeitung durchführen.

Gemeinsame Nutzung von Daten durch Anwendungen

Die Übermittlung eines ADO.NET-Datasets zwischen Anwendungen ist viel einfacher als die Übermittlung eines nicht verbundenen ADO-Recordsets. Verwenden Sie COM-Marshalling, um ein nicht verbundenes ADO-Recordset von einer Komponente an eine andere zu übermitteln. Verwenden Sie ein Dataset, das einen XML-Stream übertragen kann, um Daten an ADO.NET zu übertragen.

Die Übermittlung von XML-Dateien bietet gegenüber dem COM-Marshalling die im Folgenden aufgeführten Vorteile:

Mehr Datentypen

COM-Marshalling stellt eine begrenzte Anzahl von Datentypen zur Verfügung, nämlich die, die im COM-Standard definiert sind. Da die Übermittlung von Datasets bei ADO.NET auf einem XML-Format basiert, gibt es bei den Datentypen keine Beschränkungen. Somit können die Komponenten, die das Dataset gemeinsam nutzen, die ganze Bandbreite an Datentypen verwenden, die sie für gewöhnlich auch verwenden würden.

Leistung

Die Übermittlung eines großen ADO-Recordsets oder eines großen ADO.NET-Datasets kann Netzwerkressourcen beanspruchen; bei steigender Datenmenge wird das Netzwerk ebenfalls stärker belastet. Sowohl bei ADO als auch bei ADO.NET können Sie die Übermittlung von Daten auf ein Minimum beschränken. ADO.NET bietet jedoch einen weiteren Leistungsvorteil, nämlich den, dass die Datentypen nicht konvertiert werden müssen. Bei ADO, bei dem für die Übermittlung von Recordsets zwischen den Komponenten ein COM-Marshalling erforderlich ist, müssen die ADO-Datentypen in COM-Datentypen konvertiert werden.

Überwinden von Firewalls

Eine Firewall kann zwei Komponenten stören, die nicht verbundene ADO-Recordsets zu übermitteln versuchen. Denken Sie daran, dass Firewalls in der Regel so konfiguriert sind, dass sie HTML-Text passieren lassen, Anforderungen auf Systemebene (wie COM-Marshalling) jedoch verhindern.

Da Komponenten ADO.NET-Datasets unter Verwendung von XML austauschen, lassen Firewalls Datasets passieren.

Siehe auch

Konzepte

Vorteile von ADO.NET

Weitere Ressourcen

Erste Schritte mit dem Datenzugriff

Herstellen von Datenverbindungen in Visual Studio

Vorbereiten der Anwendung auf den Empfang von Daten

Abrufen von Daten für die Anwendung

Anzeigen von Daten in Formularen in Windows-Anwendungen

Bearbeiten von Daten in der Anwendung

Überprüfen von Daten

Speichern von Daten

Datenressourcen