修改数据时报错

修改数据时报错

修改数据时报错:Duplicate entry '16' for key 'user.PRIMARY'

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,修改数据的sql有问题。修改sql语句应该是:

update user set username=?,password=?,fullname=?,birthday=?,phone=?,addr=? where uid=?

通过uid进行修改时,uid做为条件在where语句后。

建议同学修改一下再试试。

祝:学习愉快~

提问者 小老哥丶 2020-07-09 12:02:53

这是表的字段的类型

http://img1.sycdn.imooc.com//climg/5f0696da09caf62707180153.jpg

  • 提问者 小老哥丶 #1
    这个表的uid有外键约束,但是子表没有任何数据
    2020-07-09 12:07:00
好帮手慕阿满 2020-07-09 11:57:51

同学你好,修改同样的数据应该不会报错。怀疑可能是同学修改数据的sql有问题,所以建议同学检查修改数据的sql,或者同学可以将修改时的代码贴一下,方便我们检查。

祝:学习愉快~

  • 提问者 小老哥丶 #1
    修改的代码:if(!flag) { String sql1="update user set uid=?,username=?,password=?,fullname=?,birthday=?,phone=?,addr=?"; pstmt=conn.prepareStatement(sql1); pstmt.setInt(1, user.getUid()); pstmt.setString(2, user.getName()); pstmt.setString(3, user.getPassword()); pstmt.setString(4, user.getFullname()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date birthday=sdf.parse(user.getBirthday()); pstmt.setTimestamp(5, new Timestamp(birthday.getTime())); pstmt.setString(6, user.getPhone()); pstmt.setString(7, user.getAddr()); pstmt.executeUpdate(); } 问题出现的过程:sql中创建了第二个user表之后就出现了
    2020-07-09 12:00:26
  • 提问者 小老哥丶 #2
    应该说是,sql中创建了第二条user数据之后就出现了
    2020-07-09 12:01:13
好帮手慕阿满 2020-07-09 11:09:16

同学你好,报错提示是指user表的主键16重复了。建议同学检查一下修改数据的sql。

祝:学习愉快~

  • 提问者 小老哥丶 #1
    修改成同样的数据也会报错吗 原本的值就是16呀,
    2020-07-09 11:10:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师