弄清楚SQLException中违反了“哪个约束”

时间:2011-08-02 14:17:52

标签: java jdbc exception-handling unique-constraint

我的代码可能遇到许多不同约束的“约束违例异常”(CVE)。为了向用户显示有意义的消息并采取特定操作,我正在解析String返回的getMessage()。它有效,但很丑,肯定不容易维护。

我想知道是否有更好的方法?这必须是一个非常常见的场景;是否有我可以遵循的模式或最佳实践?

谢谢。

1 个答案:

答案 0 :(得分:2)

AFAIK,因为你对哪个特定约束失败感兴趣,无论你做什么都是唯一的方法。

我不确定您正在谈论哪个数据库,但您可以尝试.. SQLException.getErrorCode()SQLException.getSQLState()。这些将根据数据库供应商提供更多信息。

例如,在Oracle中,SQLException.getErrorCode()只会告诉您违反了约束,而不一定是哪种约束。