Kursinhalt
Einführung in .NET mit C#
Einführung in .NET mit C#
DataReader vs DataSet
Im letzten Abschnitt haben wir das MySqlDataReader
-Objekt verwendet, um Daten aus der Datenbank zu lesen.
Theoretisch ruft DataReader (oder MySqlDataReader
) nicht die gesamten Daten ab, wenn wir eine Abfrage ausführen. Stattdessen ruft es die Daten in einer sequenziellen Weise ab, was bedeutet, dass es eine Zeile nach der anderen abruft. Wenn wir die Read()-Methode ausführen, wird die nächste Zeile in Echtzeit aus der Datenbank abgerufen.
Deshalb ist eine aktive Verbindung zur Datenbank erforderlich, während die Daten abgerufen werden. Dies erklärt auch, warum wir das DataReader-Objekt nach dem Abrufen der Daten schließen müssen.
Andererseits haben wir eine andere Methode zum Abrufen von Daten, nämlich über einen DataAdapter. Ein DataAdapter holt relevante Daten aus der Datenbank und füllt ein DataSet mit den abgerufenen Daten, wodurch im Wesentlichen eine Kopie dieser Daten erstellt wird. Ein DataSet ist eine spezielle Art von Klasse zum Speichern von Daten, die aus einer SQL-Datenbank abgerufen wurden. Wir können Daten aus einem DataSet leicht zugreifen und anzeigen.
Obwohl beide Methoden fast gleich erscheinen mögen, gibt es einige wesentliche Unterschiede zwischen DataReader und DataSet:
Speicherverbrauch und Speicherung:
- DataReader ruft Daten aus der Datenbank einen Datensatz nach dem anderen ab und hält eine Verbindung offen, während die Daten gelesen werden. Es speichert die Daten nicht im Speicher. Dies führt zu einem minimalen Speicherverbrauch;
- DataSet speichert die aus der Datenbank abgerufenen Daten im Speicher innerhalb der Anwendung.
Zugänglichkeit und Navigation:
- DataReader bietet einen schnellen, nur vorwärts gerichteten Datenstrom. Es ermöglicht sequenziellen Zugriff auf die Daten und unterstützt keinen zufälligen Zugriff oder Navigation. Sobald ein Datensatz gelesen wurde, kann er nicht erneut aufgerufen werden, es sei denn, die Abfrage wird erneut ausgeführt;
- DataSet ermöglicht es Ihnen, Zeilen in beliebiger Reihenfolge zu durchlaufen und Daten innerhalb des DataSets zu ändern, ohne die Originaldaten in der Datenbank zu beeinflussen.
Echtzeit- vs. Getrennter Zugriff:
- DataReader bietet Echtzeitzugriff auf Daten aus der Datenbank. Es erfordert eine aktive Verbindung zur Datenbank während des Lesens der Daten, und die Verbindung bleibt offen, bis alle Daten gelesen wurden oder bis der DataReader explizit geschlossen wird;
- DataSet bietet getrennten Zugriff auf Daten. Sobald Daten aus der Datenbank abgerufen und im DataSet gespeichert wurden, kann die Verbindung zur Datenbank geschlossen werden. Die Daten sind dann innerhalb der Anwendung verfügbar und können offline manipuliert werden, ohne eine Verbindung zur Datenbank aufrechtzuerhalten.
Aus den oben genannten Vor- und Nachteilen können wir schließen, dass DataReader für Szenarien geeignet ist, in denen nur vorwärts gerichteter Zugriff auf Daten ausreicht, während DataSet besser für Szenarien geeignet ist, in denen Sie die Verbindungszeit minimieren und interaktiv mit Daten arbeiten möchten.
1. Welche der folgenden Aussagen über DataReader ist wahr?
2. Was speichert DataSet im Speicher?
Danke für Ihr Feedback!