表更新的疑问
我有一个表 字段分别为 学号,姓名,班级,身份证号,和报考科目其中 学号和身份证号是每行数据都是不同的 但是主键是 学号和报考科目
也就是说 同一学生可以报考不同科目
现在我要更新表 更新内容是直接在datagridview中改的 代码如下
SqlConnection cn = new SqlConnection("server=WINNER;database=shcms;uid=sa;pwd=sa");
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = @"update allstudents set 学号=@学号,姓名=@姓名,班级=@班级,身份证号=@身份证号,报考语种=@报考语种,学制=@学制,入学年份=@入学年份,专业类别=@专业类别 where 身份证号=@身份证号";
cmd.Parameters.Add("@学号", SqlDbType.Char, 15, "学号");
cmd.Parameters.Add("@姓名", SqlDbType.VarChar, 30, "姓名");
cmd.Parameters.Add("@班级", SqlDbType.VarChar,40, "班级");
cmd.Parameters.Add("@身份证号", SqlDbType.Char, 18, "身份证号");
cmd.Parameters.Add("@报考语种", SqlDbType.Char, 2, "报考语种");
cmd.Parameters.Add("@学制", SqlDbType.Int,4, "学制");
cmd.Parameters.Add("@入学年份", SqlDbType.Char, 4, "入学年份");
cmd.Parameters.Add("@专业类别", SqlDbType.Char, 4, "专业类别");
SqlDataAdapter da = new SqlDataAdapter();
da.UpdateCommand = cmd;
da.FillLoadOption = LoadOption.OverwriteChanges;
try
{
da.Update(ta5);
MessageBox.Show("更新成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
dataGridView2.DataSource = ta5;
现在问题就是 这样一来如果有一个同学选了不同科目 就有两行这个同学的记录 其两行的学号和身份证号是一样的 更新的时候 就会出现主键重复 要怎么才能不重复啊 望高手指点 --------------------编程问答-------------------- 一个人不是只有一个学号吗?怎么会每行都不同呢? --------------------编程问答-------------------- 建三个表一个学生信息表,一个选课信息表,一个学生选课记录表这样就方便了 --------------------编程问答-------------------- 不知道你是想要二行还是一行。如果,只想要一行的话,把原来的数据替换了就行了。
如果想记录变更过程的话,就要再加一个表,把所有的变更过程都这到这个表中。
注意,原表中保存学生的基本情况,新表中只记录学生的ID号和课程。
补充:.NET技术 , C#