Frage

Was ist die beste Methode, um Tausende von Zeilen zu speichern und nach etwas zu aktualisieren.

Derzeit verwende ich ein DataTable, fülle sie, wenn ich fertig bin

MyDataAdapter.Update(MyDataTable)

Nachdem ich einige Veränderungen bei MyDataTable vorgenommen hatte, verwende ich erneut die Methode von MyDataAdapter.Update (myDatabable).

Bearbeiten:

Es tut mir leid, dass ich nicht mehr Informationen bereitstellte.

Es kann bis zu 200.000 Zeilen geben, die aus einer XML -Datei erstellt werden. Es werden Zeilen in der Datenbank gespeichert. Danach wird es für jede Zeile einen Prozess geben. Und ich muss jede Zeile in der Datenbank aktualisieren.

Anstatt Zeile nach Zeile zu aktualisieren, habe ich beschlossen, das DataTable zu aktualisieren und denselben Datenadapter zum Aktualisieren der Zeilen zu verwenden.

Das ist das Beste von mir.

Ich denke, dass es einen intelligenteren Ansatz geben kann.

War es hilfreich?

Lösung

Bei der Reaktion auf Ihre Kommentare:

Ein DataAdapter.Update() Wird eine Zeile udate (und einfügen/löschen). Wenn Sie individuelle Änderungen haben, gibt es wirklich keinen schnelleren Weg. Wenn Sie systematische Änderungen haben, wie SET Price = Price+ 2 WHERE SelByDate < '1/1/2010' Sie sind besser, indem Sie a Dbcommand gegen die Datenbank.

Aber vielleicht sollten Sie sich vor der Leistung um Transaktionen und Fehlerbehandlungen sorgen.

Andere Tipps

Wenn ich richtig verstehe, führen Sie zwei separate Vorgänge aus: Laden von Zeilen in eine Datenbank und dann diese Zeilen aktualisieren.

Wenn die Zeilen, die Sie einfügen, von einem anderen ADO.NET unterstützt wurden, können Sie SQLBULKCOPY verwenden, um die Zeilen in Stapel einzufügen, die effizienter sind als die Verwendung eines DataTable.

Sobald sich die Zeilen in der Datenbank befinden, würde ich davon ausgehen, dass Sie ein SQLCommand besser ausführen würden, um ihre Werte zu ändern.

Wenn Sie mehr Details darüber geben können, was-und warum-Sie die Frage stellen, dann können wir vielleicht eine Antwort darauf anpassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top