DataSet

Eintrag zuletzt aktualisiert am: 22.09.2010

Ein DataSet ist das zentrale Element der Datenbankzugriffschnittstelle ADO.NET und repräsentiert eine Menge von Tabellen (Relationen) im Hauptspeicher. Ein DataSet kann daher auch als eine hierarchische In-Memory-Database bezeichnet werden.

Hinweis: In Microsoft SQL Server Reporting Services (SSRS) wird der Begriff "DataSet" allgemein für eine Datenmenge verwendet. SSRS-Datasets basieren nicht auf ADO.NET Datasets.

Es gibt drei Möglichkeiten, ein DataSet zu füllen:
Die Tabelle können mit Hilfe von Managed Providern aus unterschiedlichen Datenbankquellen geladen werden. Um Daten aus einem Managed Provider in ein DataSet zu tranferieren, wird ein DataAdapter benötigt.
Auch das Laden von XML-Daten in ein DataSet ist möglich.
Zum Dritten kann ein DataSet auch per Programmcode gefüllt werden.

Dieses Konzept existierte in ADO noch nicht. Dort gab es nur RecordSet-Objekte, die jeweils genau eine Tabelle (im relationalen Datenbankmodell auch Relation genannt – nicht zu verwechseln mit dem englischen Begriff relation, der Verknüpfung bedeutet) repräsentiert haben. Ein DataSet ist aber nicht die Zusammenfassung mehrerer RecordSet-Objekte. Die einzelnen Tabellen werden nicht mehr durch RecordSet-, sondern durch DataTable-Objekte repräsentiert.

Zwischen DataTable-Objekten in einem DataSet können Verknüpfungen definiert werden. Die Verknüpfungen werden dann nicht wie Joins im relationalen Datenbankmodell als Tabellen, sondern durch hierarchische Eltern-Kind-Beziehungen dargestellt.

Ein DataSet erlaubt alle Zugriffsarten. Es ist disconnected, d.h. die Daten aus der Datenquelle werden komplett in das DataSet eingelesen, im Speicher gehalten und erst zu einem definierbaren Zeitpunkt werden die kompletten Änderungen zurück an die Datenquelle gegeben (Batch Update).

Für das Einfügen, Ändern oder Löschen einzelner Datensätze sollte man kein DataSet verwenden. Für diese Fälle sollte man mit der OleDbCommand-Klasse einen SQL-Befehl an die Datenquelle senden.
Sind die Inhalte hilfreich?