为什么我明明没有重复却还是提示"违反了 PRIMARY KEY 约束 'PK_registerItems'"
来源:百度知道 编辑:UC知道 时间:2024/05/12 09:23:10
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "insert into registerItems values('','','','')";
cmd.ExecuteNonQuery();
cmd.CommandText = "update registerItems set userName='" + this.tbxUserName.Text + "',userPwd='" + this.tbxUserPwd.Text + "',userSex='" + this.RadioButtonList1.Text.ToString() + "',userEmail='" + this.tbxEmail.Text + "'";
cmd.ExecuteNonQuery();
con.Close();
//主键设置的用户名,明明两次输入的是不同的值却还是说重复,真是烦人!
在没有数据的时候第一次提交数据都能添加到数据库,第二次输入的是不同的值点提交就出现这个错误提示了,谁能帮我解决下啊?
我只把第一个设置成的主键,insert into registerItems values('','','','')";
这句没重复,只有插入的第一个空格是主键,这四个空格插入后马上就被后面的UPDATE添满了的
insert into registerItems values('','','','')";
你每次执行 都要先运行这一句 这是全空值呀 也就是说username也是空值 而数据库主键是username 两次执行这条语句 主键就重复了
不过真正的问题在于 你下面的update语句 没有设置条件 也就是没有where值 这样的update 是update所有行的 把所有行update为同样的数据 当然主键重复了
补充回答: 你这样的语句没法用 得修改 一种方法是不要前面的insert语句 直接在得到数值后下面进行insert 另一种方法是设置一个索引ID 然后在update时设置WHERE子句的ID
建议楼主直接将获得的值存入数据库,没必要先insert后update。
如果必须要这样的话,可以试试:
cmd.CommandText = "update registerItems set userName='" + this.tbxUserName.Text + "',userPwd='" + this.tbxUserPwd.Text + "',userSex='" + this.RadioButtonList1.Text.ToString() + "',userEmail='" + this.tbxEmail.Text + "' where userName=''";
兄弟你的程序很诡异
insert into registerItems values('','','','')";当然会重复
你为什么不直接 insert into registerItems values(" + this.tbxUserName.Text + "," + ...)这样?<