c#添加功能失败,insert语句与foreign key约束冲突

.Net技术 码拜 10年前 (2015-02-12) 1355次浏览 0个评论

错误视图:
c#添加功能失败,insert语句与foreign key约束冲突

相应代码:(SujectId是外键)
private void button1_Click(object sender, EventArgs e)
{

// 查询题目信息的sql语句
string sql = “insert into Subject (SubjectId)values(“” + text5.Text + “”);”;
sql = “insert into Question ( QuestionId, Question,Answer,Difficulty,SubjectId,OptionA,OptionB,OptionC,OptionD) values (“” + text1.Text;
sql += “”, “” + text2.Text + “”, “” + text3.Text + “”, “” + text4.Text + “”, “” + text5.Text + “”, “” + text6.Text + “”, “” + text7.Text + “”, “” + text8.Text + “”, “” + text9.Text + “”);”;
try
{
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
DBHelper.connection.Open();
command.ExecuteNonQuery();

MessageBox.Show(“添加成功!”, “提示”);

DataGridViewRowCollection dgrc = dgv.Rows;
Object[] objs = new Object[4];
objs[0] = text1.Text;
objs[1] = text2.Text;
objs[2] = text3.Text;
objs[3] = text4.Text;
objs[4] = text5.Text;
objs[5] = text6.Text;
objs[6] = text7.Text;
objs[7] = text8.Text;
objs[8] = text9.Text;
int row = dgrc.Add(objs);
dgv.CurrentCell = dgv.Rows[row].Cells[0];
}
catch (Exception ex)
{
MessageBox.Show(“添加失败:” + ex.ToString(), “提示”);
}
finally
{
DBHelper.connection.Close();
}
}

c#添加功能失败,insert语句与foreign key约束冲突
这不是C#的问题,是sql server的报错。

你先搞清楚外键约束
外键约束,比如表B存在一个字段b,有外键约束,引用于表A的主键a,那么在向表B插入数据时,字段b必须为表A中a已经存在的值;如果试图在字段b中存放一个a中没有的值,则会报违反外键约束。

你搞清楚主键约束,你的问题就明朗了。

c#添加功能失败,insert语句与foreign key约束冲突
与外键冲突,课程表有对应的课程ID么?
还有第一个语句那儿,你是不用执行还是什么情况?看你的想法是想先插入课程ID,再加入相应的题啊。
c#添加功能失败,insert语句与foreign key约束冲突
引用 2 楼 q469966816 的回复:

与外键冲突,课程表有对应的课程ID么?
还有第一个语句那儿,你是不用执行还是什么情况?看你的想法是想先插入课程ID,再加入相应的题啊。

课程表里面有对应的课程ID,而且是主键,第一个语句我是想要把课程ID插入课程表表中,看能不能解决这一冲突问题,结果还是报错。。。

c#添加功能失败,insert语句与foreign key约束冲突
引用 1 楼 lovelj2012 的回复:

这不是C#的问题,是sql server的报错。

你先搞清楚外键约束
外键约束,比如表B存在一个字段b,有外键约束,引用于表A的主键a,那么在向表B插入数据时,字段b必须为表A中a已经存在的值;如果试图在字段b中存放一个a中没有的值,则会报违反外键约束。

你搞清楚主键约束,你的问题就明朗了。

那主键约束怎么删除啊?

c#添加功能失败,insert语句与foreign key约束冲突
20分
引用 4 楼 cola0203 的回复:
Quote: 引用 1 楼 lovelj2012 的回复:

这不是C#的问题,是sql server的报错。

你先搞清楚外键约束
外键约束,比如表B存在一个字段b,有外键约束,引用于表A的主键a,那么在向表B插入数据时,字段b必须为表A中a已经存在的值;如果试图在字段b中存放一个a中没有的值,则会报违反外键约束。

你搞清楚主键约束,你的问题就明朗了。

那主键约束怎么删除啊?

http://msdn.microsoft.com/zh-cn/library/ms189579(v=sql.105).aspx


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c#添加功能失败,insert语句与foreign key约束冲突
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!