Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C# DataGrid speichern in Datenbank (https://www.delphipraxis.net/34207-c-datagrid-speichern-datenbank.html)

Klarabella 19. Nov 2004 10:04


C# DataGrid speichern in Datenbank
 
Hallo! :hi:

Ich habe in C#.NET ein DataGrid, das zu Anfang gefüllt wird, dann einen ganzen Haufen neuer Datensätze erhält und schließlich die Änderungen wieder in der Datenbank gespeichert werden sollen.

Das DataSet ist die gesamte Zeit mit dem DataGrid verbunden, sollte also alle Änderungen enthalten. :gruebel:

Aber WIE speicher ich nun die Änderungen im DataSet in der Datenbank???

Hab was in diese Richtung probiert:
Delphi-Quellcode:
private void abgleich_DB(DataSet DS)
{
SqlDataAdapter daAbgleichDB = new SqlDataAdapter();

string connStr = @"...";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
daAbgleichDB.Update(DS);
conn.Close();
}
funktioniert aber nix :(
Also es gibt keine Fehlermeldung, aber es wird auch nix in die Datenbank geschrieben.
Hat das irgendwer schon mal gemacht und kann mir sagen wie das geht?

Gruß, Klarabella

Robert_G 19. Nov 2004 19:15

Re: C# DataGrid speichern in Datenbank
 
Hallo Klarabella :hi:

Eine .Net DataTable verwaltet seine Rows mit Hilfe der Eigenschaft RowState.
Nur Rows mit einem Status != DataRowState.Unchanged und != DataRowState.Detached werden vom DataAdapter an seine DML-Commands weitergereicht.
Du kannst das ganz einfach so testen:

Code:
DataSet ChangedData = DeinDataSet.GetChanges();
if (ChangedData != null)
  DeinDataAdapter.Update(ChangedData);
Setze einen Break point in der 2. Zeile und schaue dir im Watch Window "ChangedData" an. Du wirst dort nur die DataTables und DataRows sehen, die geändert wurden. ;)

Eine frisch selektierte Tabelle wird dort natürlich nicht auftauchen. Die Eigenschaft AcceptChangesDuringFill eines DataAdapters ist per default auf True -> alle Einträge erhalten bei einem Fill den Status DataRowState.Unchanged.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz