数据库里有名为major的表major(major_id,major_name,depart_id),其中major_id为主键。
想实现选择修改的major数据行,弹出修改窗口,里面已填充好一行内容,其中depart_id为只读,可修改。
代码如下:
SqlConnection conn = new SqlConnection (connString);
string UpdSqlStr = "update major set " +
                "major_name = '" + textBox2.Text + "'," + 
                "major_id = '" + textBox1.Text + "' where depart_id = '"
                + depart_id + "'";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = UpdSqlStr;
conn.Open();
cmd.Connection = conn;
cmd.ExecuteNonQuery();
conn.Close();
this.DialogResult = DialogResult.OK;
this.Close();执行总是报错“违反了 PRIMARY KEY 约束 'PK_major'。不能在对象 'dbo.major' 中插入重复键”
大致知道哪里错,但就是不是很了解如何改动能够在规则内又不需要进行大的改动。
劳烦各位指正了!

解决方案 »

  1.   

    说明你表没设计好,主键一般是不允许改变的,
    可以改变的最好不要作为主键。你可以另外增加一个字段做主键,
    然后设置 major_id 为唯一索引。还有你的程序设计有问题,
    怎么能根据 depart_id 去修改作为主键的major_id,
    depart_id又不是唯一的,那肯定会导致major_id重复,你的设计感觉很乱
      

  2.   

    textBox1.Text不能为数据库major_id列中已存在的值.