Veröffentlicht 30. Juli 201015 j Hallo, folgendes ich habe 2 Tabellen: T_Kunde PK_Kunde Nname Vname FK_Adresse T_Adresse PK_Adresse Strasse Ort Im ManegementStudio kann ich ganz normal über INSERT INTO T_Kunde (NName,Vname,FK_Adresse) VALUES ('Meier','Sven',null) einen Neuen Kunden ohne Adresse hinzufügen. Nun brauche ich diese Sache aber nicht fürs ManagementStudio sondern im CodeBehind einer asp.net anwendung. bisher habe ich folgendes versucht: string nname=string.empty; string vname=string.empty; int fk_adresse=0; //Den Teil wo den Variablen Werte zugewiesen werden habe ich weggelassen. string insert= "INSERT INTO T_Kunde (NName,Vname,FK_Adresse) VALUES (@Nname,@Vname,@FK_Adresse) SqlConnection connection = new SqlConnection(sqlDS_main.ConnectionString); SqlCommand sqlCommand = null; try { sqlCommand = new SqlCommand(insert); sqlCommand.Parameters.AddWithValue("@Nname", nanme); sqlCommand.Parameters.AddWithValue("@Vname", vname); sqlCommand.Parameters.AddWithValue("@FK_Adresse", fk_adresse); sqlCommand.Connection = connection; sqlCommand.ExecuteNonQuery(); } catch(Exception exc) { lbl_info.Text = exc.Message.ToString(); } FK_Adresse ist in der Tablle Kunde vom Datentyp int. Wenn ich ihm hier die "0" mitgebe kommt folgende Fehlermeldung: Die INSERT-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung. Es gibt halt in der Tablle Adresse keinen Datensatz mit dem PK "0" das ist klar, aber eigentlich will ich ja auch "NULL". In der Spalte für FK_Adresse sind übrigens NULL-Werte zulässig. Hat jemand ne Idee wo mein Denkfehler ist? Danke
30. Juli 201015 j ok, wenn ich int? fk_adresse=null; kann ich den integerwert zumindest auf Null setzten. Dann habe ich allerdings ein neues Problem... Fehlermeldung: Die parametrisierte Abfrage '(@Nname nvarchar(5),@Vname nvarchar(5),@FK_Adresse int' erwartet den '@FK_Adresse'-Parameter, der nicht bereitgestellt wurde.
30. Juli 201015 j Es gibt halt in der Tablle Adresse keinen Datensatz mit dem PK "0" das ist klar, aber eigentlich will ich ja auch "NULL". ja du schreibst aber 0 rein .. du müsstest aber System.DBNull verwenden
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.