Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Datenbank lässt sich nicht speichern
niggo233 - So 18.09.11 09:00
Titel: Datenbank lässt sich nicht speichern
Hallo
ich habe ein problem ich habe zwei Tabellen in einer Daten bank die per BindingSource mit einandere verbunden sind,es ist zwar nur eine Testdatenbank aber ich brauch das speichern natürlich für weitere Datenbankanwendungen.Die erste Tabelle heißt "Publishers" und dort kommt der Verlag für ein Buch hinein.Die zweite Tabelle heißt "Books" wo BooksId,PublisherId,Title und Author vorhanden ist.Wenn ich jetzt ein Verlag eingebe und dazu ein Buch vorhanden ist dann werden nur die Bücher von diesen Verlag angezeigt dieser Verlag war aber schon außerhalb der c# programmierung eingespeichert die zweite Tabelle also Books speichert er,aber wenn ich jetzt ein neuen Verlang speichern will stürtzt das Programm ab und zeigt mir eine ewig lange Fehlermeldung über den dataGridView
Hier mal mein kompletter Code für dieses Programm:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| ]namespace test_datenbank { public partial class Form1 : Form { SqlDataAdapter adapterPublisher; SqlDataAdapter adapterBooks; DataSet dsLibrary; public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\nig go\Documents\Visual Studio 2010\Projects\Library.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True"); SqlCommand command = new SqlCommand("SELECT * FROM Publishers", conn); adapterPublisher = new SqlDataAdapter(command); SqlCommandBuilder cbPublisher = new SqlCommandBuilder(adapterPublisher);
adapterBooks = new SqlDataAdapter("SELECT * FROM Books", conn); SqlCommandBuilder cbBooks = new SqlCommandBuilder(adapterBooks);
dsLibrary = new DataSet();
dsLibrary.Tables.Add("Publishers"); adapterPublisher.Fill(dsLibrary, "Publishers"); dsLibrary.Tables.Add("Books"); adapterBooks.Fill(dsLibrary, "Books");
dsLibrary.Relations.Add("Publishers_Books", dsLibrary.Tables["Publishers"].Columns["PublisherId"], dsLibrary.Tables["Books"].Columns["PublisherId"]);
BindingSource bsPublishers = new BindingSource(); bsPublishers.DataSource = dsLibrary; bsPublishers.DataMember = "Publishers"; dataGridView1.DataSource = bsPublishers;
dataGridView1.DataSource = bsPublishers; dataGridView1.Columns[0].Visible = false; BindingSource bsBooks = new BindingSource(); bsBooks.DataSource = bsPublishers; bsBooks.DataMember = "Publishers_Books";
dataGridView2.DataSource = bsBooks; }
private void btnAbbrechen_Click(object sender, EventArgs e) { Application.Exit(); }
private void btnSpeichern_Click(object sender, EventArgs e) { adapterPublisher.Update(dsLibrary, "Publishers"); adapterBooks.Update(dsLibrary,"Books"); } } } |
Ich hoffe jemand kann mir helfen
danke schon mal im voraus
Mfg
Moderiert von
Kha: ".NET Version" geändert
ujr - So 18.09.11 14:34
niggo233 hat folgendes geschrieben : |
und zeigt mir eine ewig lange Fehlermeldung über den dataGridView |
Und die lautet wie?
Kha - So 18.09.11 15:16
Hier geht es nicht wirklich um Silverlight, oder :gruebel: ?
niggo233 - So 18.09.11 19:18
Kha hat folgendes geschrieben : |
Hier geht es nicht wirklich um Silverlight, oder :gruebel: ? |
Tut mir leid silverlight nicht nur 4.0
tut mir leid
niggo233 - So 18.09.11 19:19
Hier die fehlermeldung:
DataGridView-Ausnahme
System.Data.InvalidConstraintExeption:Für
ForeignKeyConstraint Publishers_Books müssen die
untergeordneten Schlüsselwerte(3) in der übergeordneten
Tabelle vorhanden sein.
bei
System.Data.ForeignKeyConstraint.CheckConstrait(DataRowchildRow,DataRowAction action)
bei
System.Data.DataTable.RaiseRowChanging(DataRowChangeEven
tArgs args,DataRow eRow,DateRowAction eAction,Boolean
fireEvent)
bei System.Data.DataTable.SetNewRecordWorker(DataRow
row,Int32 proposedRecord,DataRowAction action,Boolean
isInMerge,Boolean suppressEnsurePropertyChanged,Int32
position,Boolean fireEvent,Exeption&deferred Execption)
bei System.Data.DataRow.EndEdit()
bei System.Data.DataRowView.EndEdit()
bei System.Windows.Forms.CurrencyManager.End currentEdit()
bei
System.Windows.Forms.DataGridView.DataGridViewDataConnect
ion.OnRowValidating(DataGridViewCellCancelEventArgs e)
Behandel Sie das DataError-Ereignis,um dieses Standarddialogfeld zu ersetzen
Th69 - Mo 19.09.11 09:51
Hallo niggo233,
es müssen erst die Bücher abgespeichert werden, damit du dann Referenzen (Ids) auf diese in der Publisher-Tabelle angeben kannst (wegen des ForeignKeyConstraints).
Also vertausche einfach die beiden Update-Methoden:
C#-Quelltext
1: 2:
| adapterBooks.Update(dsLibrary,"Books"); adapterPublisher.Update(dsLibrary, "Publishers"); |
niggo233 - Di 20.09.11 16:40
Hi
ja also daran liegt es nicht gleiche Fehlermeldung
niggo233 - Do 20.10.11 18:17
Hi
Danke geht jetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!