2012-03-26 72 views
0

我試圖插入數據到表'表'中,但我從外部關鍵字'building_id'從建築物表的錯誤,我如何通過它?C#,SQL FOREIGN KEY

錯誤提示:

INSERT語句衝突與外鍵約束 「FK_user_user」。
數據庫「C:\ USERS \ USER \ DOWNLOADS \ VIUSAL \ VIUSAL \ ENERGYVIUSAL \ ENERGYVIUSAL \ DATABASE1.MDF」中出現衝突,表「dbo.building」,列'building_id'。 該聲明已被終止。

這是代碼:

DataRow drowEmployee = dsetEnergyViusal.Tables["Table"].NewRow(); 
drowEmployee["Name"] = txtName.Text; 
drowEmployee["ContactID"] = Convert.ToInt32(txtContactId.Text); 
drowEmployee["Company"] = txtCompanyId.Text; 
drowEmployee["Building_id"] = txtBuildingID.Text; 
drowEmployee["Telephone"] = txtContactNumber.Text; 
drowEmployee["Email"] = txtEmail.Text; 
drowEmployee["Password"] = txtPassword.Text; 

if (radClient.Checked) 
    drowEmployee["Client"] = radClient.Checked; 
else if (radNews.Checked) 
    drowEmployee["News"] = radNews.Checked; 

drowEmployee["Telephone"] = txtContactNumber.Text; 

dsetEnergyViusal.Tables["Table"].Rows.Add(drowEmployee); 

sqldaEnergyViusal.Update(dsetEnergyViusal, "Table"); 

MessageBox.Show("Record has been successfully added.", "EnergyViusal", MessageBoxButtons.OK, MessageBoxIcon.Information); 
User_register_Load(null, null); 

回答

0

可能是你將被添加Building_Id作爲當前插入表的外鍵。爲了避免必須首先插入到建築物表格中,並且必須在此插入中使用插入的標識符,即必須在插入中使用有效的building_id。

+0

是的,我把building_id添加爲tabletable中的外鍵,但是猜測它想要我先插入到建築物表中,然後將其引用到tabletable。但我該怎麼做? – user1114029 2012-03-26 12:12:21

+0

@ user1114029:外鍵的用途就是這樣,它必須是其他表中的主鍵。因此,您可以將建築物列表作爲插入表單中的下拉列表,並將選定的建築物ID插入表格中。否則,您可以先插入建築物表格。採取相應的建築物ID,並在第二個查詢 – 2012-03-27 03:10:17

1

可能您在文本框中輸入的建築ID以及在「插入查詢」中發送的建築ID在「建築」表中不存在。

+0

插入此ID作爲building_id我應該創建一個新的插入查詢building_id直接插入到建築表中? – user1114029 2012-03-26 12:10:17

+0

不,你應該首先檢查它是否存在於建築物表格中,然後插入它。順便提一下,他們最好的方法是用所有可能的記錄更新建築物表格,然後讓用戶從下拉列表中進行選擇 – Habib 2012-03-26 12:27:06