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?