你如何正确捕获MySQLIntegrityConstraintViolationException?

时间:2010-05-19 16:17:33

标签: java mysql exception-handling

我正在处理一个网络应用程序,并且在我提交用户独有的表单时,

 MySQLIntegrityConstraintViolationException Duplicate entry -'username' 
for key 'PRIMARY'

我很清楚为什么会抛出这个,因为我试图用相同的主键在数据库中输入重复的条目。我不胜感激,因为这可能是多余的。

我真正想问的是我应该如何处理这个问题。我试图抓住这个例外,但显然我缺乏经验已经赶上了我。

感谢您的帮助。

有没有更好的方法来检查数据库中的重复条目?

例如,我是否应该在检查重复成员时执行操作,并只检查数据库中是否有匹配的用户名和密码?

由于

3 个答案:

答案 0 :(得分:1)

是的,特别是在这种情况下,最好在尝试插入用户之前检查是否存在具有相同用户名的其他用户。

答案 1 :(得分:1)

通常,如果可以避免抛出异常,因为它们是控制程序工作流的重要机制。您应该只使用它们来追踪错误和不规则的活动/情况。所有这些意味着,如果你捕获异常,你唯一能做的就是记录更多,将异常包装在另一个异常中并最终触发一些后退程序逻辑。

不要期望捕获异常并只检查正确的用户名。如果你正在开发某种形式的注册表格,我想你会经常做这个检查...普通用户有一些流行的话,如果你用例外实现它,你会经常抓住它......

不幸的是,如果你的数据库非常大,那么主键就是许多复杂的对象,而不是你不能保留内存中的一些元素来检查重复的条目。

答案 2 :(得分:0)

我也遇到了同样的问题,尝试使用appendReplacement处理异常。 但是不要忘记有两种类型的MySQLIntegrityConstraintViolationException 一种用于JDBC,一种用于JDBC4。 所以我建议在两个单独的try catch循环中捕获它们。