首页 新闻 会员 周边

ASP.NET中数据库的操作

0
悬赏园豆:10 [已解决问题] 解决于 2012-08-22 20:11

 【题目看起来长,但并不是费时间!麻烦各位了】

string str1, str2, str3;
str1 = sql; //sql保存的是 “学生编号”
str2 = str; //str保存的是 “课程1”的课程名称
str3 = "abc";

string sql1 = string.Empty;
sql1 += string.Format("insert into Schedule values('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}')" , str1, str2, str3, str3, str3, str3, str3, str3, str3);


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
执行上述的代码后为什么总是提示下面的错误:
“/WebSite2”应用程序中的服务器错误。
--------------------------------------------------------------------------------

INSERT 语句与 FOREIGN KEY 约束"FK__Schedule__课程2__3F466844"冲突。该冲突发生于数据库"software_project",表"dbo.Course", column '课程名称'。
语句已终止。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: INSERT 语句与 FOREIGN KEY 约束"FK__Schedule__课程2__3F466844"冲突。该冲突发生于数据库"software_project",表"dbo.Course", column '课程名称'。
语句已终止。

源错误:


行 89: cn.Open();
行 90: //执行命令对象的方法
行 91: cmd.ExecuteNonQuery();
行 92: //关闭连接
行 93: cn.Close();

源文件: f:\Liuxiaowei\VS\Software_Project\WebSite2\Default3_1.aspx.cs 行: 91
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

其中Schedule和Course为两个表其定义如下所示:

create table Student
(
姓名 varchar(20) not null,
出生日期 varchar(8),
身份证号 varchar(20),
职务 varchar(20),
学院 varchar(20) not null,
毕业时间 varchar(8), --可以为空
用户名 varchar(20) primary key,
密码 varchar(20) not null
)

create table Course
(
课程编号 varchar(20) not null,
课程名称 varchar(40) primary key,
授课老师 varchar(60),
课程性质 varchar(10) not null, --必修选修
上课时间 varchar(30) not null,
学院 varchar(30) not null,
预备知识 varchar(100),
课程费用 varchar(20) not null,
--选课人数 int default 0
)

create table Schedule
(
foreign key(学生编号) references Student(用户名),
foreign key(课程1) references Course(课程名称),
foreign key(课程2) references Course(课程名称),
foreign key(课程3) references Course(课程名称),
foreign key(课程4) references Course(课程名称),
学生编号 varchar(20) primary key,
课程1 varchar(40),
课程1成绩 varchar(5),
课程2 varchar(40),
课程2成绩 varchar(5),
课程3 varchar(40),
课程3成绩 varchar(5),
课程4 varchar(40),
课程4成绩 varchar(5)
)

XiaoweiLiu的主页 XiaoweiLiu | 初学一级 | 园豆:179
提问于:2012-08-21 22:09
< >
分享
最佳答案
1

如楼上

一定 是  课程  不存在,课程里课程名称一定要先存在才能插入。因为有约束关联啊,如下

foreign key(课程1) references Course(课程名称),
foreign key(课程2) references Course(课程名称),
foreign key(课程3) references Course(课程名称),
foreign key(课程4) references Course(课程名称),

收获园豆:3
何潮 | 菜鸟二级 |园豆:228 | 2012-08-22 11:18
其他回答(3)
1

你的insert 语句里的值从第3个开始就全是str3啊,课程表里没有"abc"这个课程吧。

收获园豆:4
向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-21 22:33

但课程名称只是一个字符串变量啊?!

我是想先随便插入一个值str3(也就是"abc"),然后再更新,但现在遇到了这个问题!

支持(0) 反对(0) XiaoweiLiu | 园豆:179 (初学一级) | 2012-08-21 22:36

@lxw0109:

你不是加了外键嘛,就表示"abc"在课程表里要有才行。

foreign key(课程2) references Course(课程名称),

而且你课程表里的主键也是“课程名称”,你要先添加“课程名称”为abc的课程。

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-21 22:40
1

”课程1“ 在表”Course“中不存在..

收获园豆:2
jingjunfeng | 园豆:873 (小虾三级) | 2012-08-22 17:35
1

有主外键关系,要先添加 课程名称

收获园豆:1
天*^o^*.使 | 园豆:140 (初学一级) | 2012-08-22 18:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册