寫程序遇到 這句報錯的意思就是 你主外鍵表數據操作錯誤了 DELETE 語句與 REFERENCE 約束"FK_tablename_tablename
解決方法很簡單,
看到qId的鑰匙有兩個色了沒有,一個金色是主鍵的顏色。另外一個是外鍵的顏色。
可以先在程序裏寫先刪除主鍵表的某個值,再刪除外鍵表的某個值, 這樣就不會報錯了。這是思路。
下面是c#實現的代碼
DialogResult result = MessageBox.Show("確定刪除題號 " + textBox1.Text + " 題庫號 " + textBox2.Text + " 的內容?", "標題", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
string commandStr = "delete from Question where qId=@qId and qBId=@qBId";
//刪除外鍵的值
string ThiscommandStr = "delete from answerQuestions where qId=@qId and qBId=@qBId";
//刪除主鍵的值
if (result == DialogResult.OK)
{
using (SqlConnection CON = new SqlConnection(sqlLink.sqlcon()))
{
CON.Open();
using (SqlCommand CMD = new SqlCommand(commandStr, CON))
{
SqlCommand ThisCMD = new SqlCommand(ThiscommandStr,CON);
CMD.Parameters.AddWithValue("@qId", textBox1.Text);
CMD.Parameters.AddWithValue("@qBId", textBox2.Text);
ThisCMD.Parameters.AddWithValue("@qId", textBox1.Text);
ThisCMD.Parameters.AddWithValue("@qBId", textBox2.Text);
ThisCMD.ExecuteNonQuery();//先執行 刪除主鍵的值的任務
ThisCMD.Dispose();//釋放資源
CMD.ExecuteNonQuery();// 再執行刪除外鍵的值的任務
CMD.Dispose();//釋放資源
button2_Click(sender, e);
}
CON.Close();
}
}