erfordert einen gültigen UpdateCommand ??
-
Hallo Leute
Ich habe aus einer Mysql-tabelle mehrere Datatables erstellt
da_e2 = new MySqlDataAdapter[iTitel]; // Atrray von DataAdaptern for (int i = 0; i < iTitel; i++) { strHeader = ds.Tables["Titel"].Rows[i][1].ToString(); /Tabellenname ermitteln da_e2[i] = new MySqlDataAdapter("Select Bezeichnung, Wert, Min, Max, Edit FROM einstellungen WHERE Titel Like '" + strHeader + "'", conn); da_e2[i].Fill(ds, strHeader); }
Diese werden dann in ein DataGridView angezeigt
Klappt wunderbar
Jetzt möchte ich die Änderungen speichernString strHeader = ""; int j=0; int iTitel;; iTitel = ds.Tables["Titel"].Rows.Count; for (int i = 0; i < iTitel; i++) { strHeader = ds.Tables["Titel"].Rows[i][1].ToString(); try { j += da_e2[i].Update(ds, strHeader); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } } MessageBox.Show("Es wurden " + j.ToString() + " Einstellungen geändert und gesichert!");
Dabei erhalte ich in den geänderten Tabellen folgende Fehlermeldung:
Aktualisieren erfordert einen gültigen UpdateCommand, wenn eine DataRow- Auflistung mit modifizierten Zeilen weitergegeben wird.
Ich weis nicht was ich jetzt damit anfangen soll ??
Muss ich jetzt noch ein UpdateCommand einfügen ??Danke und Gruß
Linus
-
Ja, musst du.
Der Grund ist, dass nicht klar ist und auch nicht default vorgegeben werden kann,
was bei einem ungültigen Update passieren soll.
Deine DataAdapter-Daten sind ja nur lokal. Was soll also passieren, wenn jemand anders die Daten zwischen zeitlich geändert hat?
Werden die einfach überschrieben, kriegst du einen Fehler,...?
-
Danke für die Antwort
ich habe jetzt ein MysqlCommandBuilder davor eingesetzt
String strHeader = ""; MySqlCommandBuilder cmd_b; // <<<<<<<<<<< int j=0; int iTitel;; iTitel = ds.Tables["Titel"].Rows.Count; for (int i = 0; i < iTitel; i++) { strHeader = ds.Tables["Titel"].Rows[i][1].ToString(); cmd_b = new MySqlCommandBuilder(da_e2[i]); //<<<<<<<<<<<<<<< try { j += da_e2[i].Update(ds, strHeader); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } } MessageBox.Show("Es wurden " + j.ToString() + " Einstellungen geändert und gesichert!");
Jetzt funktioniert es und es werden auch die Anzahl der Änderungen
korrekt angezeigt.Frage dazu noch:
wird mit
cmd_b = new MySqlCommandBuilder(da_e2[i]);
das vorherige Objekt gelöscht oder muß ich muss
ich es explizit noch löschen ??Danke und Gruß
Linus
-
Was willst Du denn in C# löschen? Dafür gibt es den GC. Der wird die Builder-Objekte schon wegräumen.
-
Ok , danke , war mir nicht ganz sicher
manchmal denke ich noch in c++
-
Guck einfach ob das Ding disposable ist. Wenn es disposable ist, solltest du es auch disposen.