Mit SqlDataAdapter mehrere Tabellen aktualisieren
-
Hallo,
ich habe drei Tabellen in einem DataSet die durch drei SqlDataAdapter abgefragt werden.Das Modifizieren und abfragen in diesem DataSet funktioniert wunderbar. Doch wenn ich die Änderungen in die Datenbank schreiben will bekomme ich eine Ausnhame, dass eine bestimmte Spalte nicht in der Datenbank zu finden sei.
Folgender Updatelauf wird von mir durchgeführt:
// Daten in die Datenbank schreiben SqlCommandBuilder cmb1 = new SqlCommandBuilder(Tabel1); SqlCommandBuilder cmb2 = new SqlCommandBuilder(Tabel2); SqlCommandBuilder cmb3 = new SqlCommandBuilder(Tabel3); Tabel1.Update(dsTabels); Tabel2.Update(dsTabels); Tabel3.Update(dsTabels);
Wenn ich nur einen SqlDataAdapter verwende und die SELECT anweisung als Batch abschicke funktioniert das auch. Allerdings aktuallisiert er mir nur die erste SELECT-Tabelle. Ist ja auch klar, da er nur entsprechende Commands für das erste SELECT erstellt.
Kann mir jemand helfen? Vielen Dank.
Gruß
Sven
-
bekomme ich eine Ausnhame, dass eine bestimmte Spalte nicht in der Datenbank zu finden sei.
Mag daran liegen, das es die Spalte einfach nicht gibt. Poste mal die exakte Fehlermeldung
-
Hi,
danke für deine Antwort. Nein, die Spalte gibt es natürlich aber in einer anderen Tabelle.Ich frage einfach mal andersrum.
Wie kann ich, wenn ich an allen 3 Tabellen im DataSet änderungen vorgenommen habe diese mit der Datenbank aktuallisieren?
Gruß
Sven
-
Du kannst doch über den DataAdapter aktualisieren. Nimm ein DataAdapter pro Tabelle, gib ihm das SELECT-SQL und die Verbindung, setze ein CommandBuilder dazu, damit die DML-Stmts vorhanden sind und aktualisieren über den Adapter.Update(dataset, table)
Hast Du ein strong typed datatset? Da sollten doch schon die betreffenden Werkzeuge vorhanden sein.
-
Schönen guten Morgen,
danke. Genau so habe ich es doch auch gemacht. Das ich dem DataAdapter gleich nach der Abfrage alle Commands (Update/Insert/Delete) VOR dem nächsten Aufruf Fill übergeben muss, war mir nicht ganz klar. Nach genauerer Überlegung eigentlich logisch aber umständlich. Mit strong typed DataSet habe ich noch nichts gemacht. Werde mir das mal anschauen. Danke.Gruß
Sven