为什么我明明没有重复却还是提示"违反了 PRIMARY KEY 约束 'PK_registerItems'"

来源:百度知道 编辑:UC知道 时间:2024/05/12 09:23:10
SqlConnection con = DB.createConnection();
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 + "," + ...)这样?<

我明明写了一个问题,等了好长时间也没有,当我重写的时候却提示我:“不能重复问题。”这是为什么? 为什么我的回收站明明什么也没有却在清空回收站时上面提示有82个文件? 为什么我明明是第一次却没有流红?~ 我没有动猫和计算机,为什么他一会提示网络电缆没有插好,一会提示已连上,还是不停的重复着来? 为什么明明很瞌睡却还是睡不着? 为什么我的瑞星防火墙明明不是新版本,却提示我不用升级, 为什么明明是第一次却没有落红呢? 为什么我输入的验证码明明是正确的,系统却提示说输入错误 为什么我的硬盘空间明明够却提示空间不足无法考进文件 为什么明明有内容的储存卡,插到电脑里却提示我未格式化?