Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Anlegen neuer Record in Datenbank


didi_12 - Do 07.06.12 15:14
Titel: Anlegen neuer Record in Datenbank
Hallo

ich versuche einen neuen Record in meiner Datenbanktabelle anzulegen. Ich habe über den Datenbank-Assistenten in VS eine entsprechende Anbindung an die Datenbank hergestellt und die Tabellenspalten mit Controls auf meinem WPF-Form verknüpft. Das Updaten existierender Records funktioniert problemlos, aber wie schaffe ich es einen neuen Record zu erzeugen und entsprechend zu befüllen.

Hier die entsprechenden typisierten Datenbank-Objekte


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
oPostkriegDataSet = ((Postkrieg2.DataSet_Postkrieg2_Direct_To_SQLDatabase)(this.FindResource("dataSet_Postkrieg2_Direct_To_SQLDatabase")));
// Lädt Daten in Tabelle "Cover_Main_Table". Sie können diesen Code nach Bedarf ändern.
oPostkriegDataSetAdapter = new Postkrieg2.DataSet_Postkrieg2_Direct_To_SQLDatabaseTableAdapters.Cover_Main_TableTableAdapter();
oCover_Main_Table_View = ((System.Windows.Data.CollectionViewSource)(this.FindResource("cover_Main_TableViewSource")));
oPostkriegDataSetAdapter.Fill(oPostkriegDataSet.Cover_Main_Table);
oCover_Main_Table_Row = oPostkriegDataSet.Cover_Main_Table.NewCover_Main_TableRow();

//oPostkriegDataSet.Cover_Main_Table.AddCover_Main_TableRow(oCover_Main_Table_Row);
//oPostkriegDataSet.Cover_Main_Table.Rows.Add(oCover_Main_Table_Row);
//oCover_Main_Table_View.View.Refresh();
oCover_Main_Table_View.View.MoveCurrentToLast();
MessageBox.Show(oCover_Main_Table_View.View.CurrentPosition.ToString());
//oCover_Main_Table_Row.SetAdded();


Wenn ich dann mit


C#-Quelltext
1:
oPostkriegDataSetAdapter.Update(oPostkriegDataSet.Cover_Main_Table)                    


durch die Kontrollen die neue typisiert Row updaten will dann passiert gar nichts. Also kein Eintrag erfolgt. Wie also erzeuge ich eine neue Row ultimativ in der Datenbanktabelle und schaffe es diese auch zu befüllen ?

Danke
didi_12

Moderiert von user profile iconTh69: Color durch C#-Tags ersetzt


didi_12 - Sa 09.06.12 17:58

Hallo,

hat einer eine Idee. Unabhängig vom konkreten Fall, wie lege ich eine neue Row in der Datenbanktabelle an und fülle diese ?

Danke
didi


Ralf Jansen - Sa 09.06.12 18:55

Sprechender Code ist eigentlich lobenswert. Geschwätzige Bezeichner kombiniert mit Underscores sind aber zu viel des guten und machen das fast unlesbar.

Sieht für mich so aus als hättest du die neue Zeile nicht in der DataTable hinzugefügt. Zumindest ist der entscheidende Teil im gezeigten Code auskommentiert. Die AddCover_Main_TableRow Methode brauchst du auf jeden Fall. Danach sollte oCover_Main_Table_Row nach dem Update auch in der Datenbank auftauchen, wenn dein TableAdapter denn ein gültiges Insert Statement enthält. Hast du die erzeugten Commands im TableAdapter mal kontrolliert?