Ich erstelle so etwas wie eine kleine Kassiereranwendung, die Aufzeichnungen für Kunden, Mitarbeiter, Dienstleistungen, Verkäufe und Termine führt. Ich verwende Windows-Formulare und innerhalb dieser DataGrids. Ich habe die Datenbank erstellt, die ich für die Anwendung verwenden werde. Ich möchte wissen, ob ich stattdessen SqlCommand-SqlDataReader oder SqlDataAdapter-DataSet verwenden sollte. Welcher Ansatz ist besser?
Dies hängt stark von der Art der gewünschten Operation ab.
Folgendes ist mein Vorschlag.
Wenn Sie Daten schneller lesen möchten, gehen Sie für SQLDataReader, aber das kommt als Kosten für die Operation, die Sie ergreifen müssen beim Lesen danach auch. Verbindung öffnen Daten lesen Verbindung schließen. Wenn Sie vergessen haben zu schließen, wird die Leistung beeinträchtigt.
Gehen Sie für SQLDataAdapter
Verwenden Sie SQLCommand (Dies kommt auch, wenn Sie SQLDataReader für gelesene Daten lesen) und zum Einfügen und Aktualisieren.
Wenn Sie .NET Frame 3.5 sp1 oder höher verwenden, würde ich auch Linq to SQL oder Entity Framework vorschlagen löse deinen Zweck.
Danke.
SqlDataAdapter
insert/delete/update/select
-Befehl.
Alle guten Sachen von SqlDataAdapter
kosten mehr Speicher. Es wird normalerweise für Systeme verwendet, die mehrere Benutzer benötigen, die mit der Datenbank verbunden sind.
Also würde ich sagen, wenn das nicht deine Situation ist, gehe für SqlCommand und das verbundene Modell.
Wenn Sie nur Daten lesen und keine Aktualisierungen / Einfügungen / Löschungen vornehmen, ist SqlDataReader
schneller. Sie können es auch mit einem DataSet
kombinieren. Wenn Sie die Datenzugriffsobjekte mit using
-Anweisungen umbrechen, behandelt die Laufzeitumgebung die Verbindungsbereinigungslogik für Sie.
Ein Muster, das ich oft für synchronen Zugriff verwende, ist etwa so:
%Vor% Bei Aktualisierungen / Löschungen / Einfügungen kann eine SqlDataAdapter
eine Überlegung wert sein, aber normalerweise nur, wenn Sie Ihre Daten bereits in DataSet
haben. Ansonsten gibt es schnellere / bessere Möglichkeiten, Dinge zu tun.
DataReader - Der Datenreader ist ein Nur-Lese-Readonly-Stream von Daten aus der Datenbank. Dies macht den Datenleser zu einem sehr effizienten Mittel zum Abrufen von Daten, da nur ein Datensatz in den Speicher bei a gebracht wird Zeit. Der Nachteil: Ein Verbindungsobjekt kann nur eines enthalten Datenreader zu einem Zeitpunkt, so dass wir den Datenreader explizit schließen müssen wir sind damit fertig. Dadurch wird die Verbindung für andere Zwecke freigegeben. Das Datenadapterobjekte verwalten das Öffnen und Schließen einer Verbindung für der auszuführende Befehl
DataAdapter - Stellt eine Reihe von SQL-Befehlen und eine Datenbank dar Verbindung, die zum Füllen des DataSets und zum Aktualisieren der Daten verwendet wird Quelle. Es dient als Brücke zwischen einem DataSet und einer Datenquelle für Daten abrufen und speichern. Der DataAdapter stellt diese Brücke zur Verfügung Mapping Fill, das die Daten im DataSet an die Daten anpasst in der Datenquelle und Update, die die Daten in den Daten ändert Quelle, um die Daten im DataSet zu vergleichen. Indem Sie es verwenden, auch DataAdapter öffnet und schließt die Verbindung automatisch und bei Bedarf.