我试图删除表NatureCharge外键引用了粉彩的表的主键,因为我需要在彩删除外键
删除多行删除多行,它的工作原理,但与问题删除行中NatureCharge 中的表看起来像
的代码:与线
private void DeleteFamBtn_Click(object sender, EventArgs e)
{
List<DataGridViewRow> selectedRows = (from row in DataGridViewFamille.Rows.Cast<DataGridViewRow>()
where Convert.ToBoolean(row.Cells["checkBoxColumn"].Value) == true
select row).ToList();
if (MessageBox.Show(string.Format("Do you want to delete {0} rows?", selectedRows.Count), "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
//delete Nature de Charge before delete Famille
foreach (DataGridViewRow row in selectedRows)
{
try
{
using (SqlConnection con = new SqlConnection(connstring))
{
con.Open();
using (SqlCommand command = new SqlCommand("DELETE NatureCharge FROM NatureCharge n INNER JOIN Famille f on n.IdFam = f.IdFam WHERE IdNat = @IdNat", con))
{
command.ExecuteNonQuery();
}
con.Close();
}
}
catch (SystemException ex)
{
MessageBox.Show(string.Format("An error occurred: {0}", ex.Message));
}
}
//Delete Famille
foreach (DataGridViewRow row in selectedRows)
{
using (SqlConnection con = new SqlConnection(connstring))
{
using (SqlCommand cmd = new SqlCommand("DELETE FROM Famille WHERE IdFam = @IdFam", con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@IdFam", row.Cells["IdFam"].Value);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
一个错误显示(这是彩部分)
cmd.ExecuteNonQuery();
附加信息:DELETE语句与参考约束“FK_NatureCharge_Famille”冲突。冲突发生在数据库“Tresorerie”,表“dbo.NatureCharge”,列'IdFam'。
不要编辑你的问题,并无效已经给出的答案! –
对不起,这是以前的错误,所以我修改了,但忘了补充新的错误,再次抱歉 – Amin
还声明哪个删除语句不正确。 – MethodMan