我正在处理一个网络应用程序,并且在我提交用户独有的表单时,
MySQLIntegrityConstraintViolationException Duplicate entry -'username' for key 'PRIMARY'
我很清楚为什么会抛出这个,因为我试图用相同的主键在数据库中输入重复的条目。我不胜感激,因为这可能是多余的。
我真正想问的是我应该如何处理这个问题。我试图抓住这个例外,但显然我缺乏经验已经赶上了我。
感谢您的帮助。
有没有更好的方法来检查数据库中的重复条目?
例如,我是否应该在检查重复成员时执行操作,并只检查数据库中是否有匹配的用户名和密码?
由于
答案 0 :(得分:1)
是的,特别是在这种情况下,最好在尝试插入用户之前检查是否存在具有相同用户名的其他用户。
答案 1 :(得分:1)
通常,如果可以避免抛出异常,因为它们是控制程序工作流的重要机制。您应该只使用它们来追踪错误和不规则的活动/情况。所有这些意味着,如果你捕获异常,你唯一能做的就是记录更多,将异常包装在另一个异常中并最终触发一些后退程序逻辑。
不要期望捕获异常并只检查正确的用户名。如果你正在开发某种形式的注册表格,我想你会经常做这个检查...普通用户有一些流行的话,如果你用例外实现它,你会经常抓住它......
不幸的是,如果你的数据库非常大,那么主键就是许多复杂的对象,而不是你不能保留内存中的一些元素来检查重复的条目。
答案 2 :(得分:0)
我也遇到了同样的问题,尝试使用appendReplacement
处理异常。
但是不要忘记有两种类型的MySQLIntegrityConstraintViolationException 一种用于JDBC,一种用于JDBC4。
所以我建议在两个单独的try catch循环中捕获它们。