我是新的MySQL用户,试图编写通过Java操作数据库的程序。
让名为users
的表格具有以下属性| USERNAME | EMAIL | ROLE |
,其中USERNAME
为PRIMARY KEY
,其余属性为NOT NULL
。
假设我做INSERT INTO users
,因为USERNAME
上存在主键约束,MySQL应该抛出错误。如何抛出此错误以及如何在JAVA中捕获它?我是否需要编写用于抛出错误的存储过程,或者INSERT INTO
语句也具有此功能?
答案 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代码量。