MySQL和Java - 在插入表时抛出异常

时间:2013-03-26 19:52:11

标签: java mysql sql database

我是新的MySQL用户,试图编写通过Java操作数据库的程序。

让名为users的表格具有以下属性| USERNAME | EMAIL | ROLE |,其中USERNAMEPRIMARY KEY,其余属性为NOT NULL

假设我做INSERT INTO users,因为USERNAME上存在主键约束,MySQL应该抛出错误。如何抛出此错误以及如何在JAVA中捕获它?我是否需要编写用于抛出错误的存储过程,或者INSERT INTO语句也具有此功能?

1 个答案:

答案 0 :(得分:1)

如果违反了主键,则会抛出SQLException,并显示一条消息,其中包含违反的约束名称。您的异常处理可能如下所示:

try {
    //do the insert
} catch (SQLException e) {
    if(e.getMessage().contains("MY_CONSTRAINT_NAME")) {
        //duplicate key
    } else {
        //some other error
    }
}

另一种方法是检查SQLException.getSQLState()SQLException.getErrorCode()

我建议使用Spring JDBC来处理SQLException translation,并且通常会减少你需要编写的JDBC代码量。