如何确定java中的数据库约束违规?

时间:2012-01-27 08:01:44

标签: java exception jdbc constraints

我依靠数据库告诉我是否存在唯一性违规,所以我想知道我得到的异常何时是某种约束违规。看起来这正是我所需要的:java.sql.SQLNonTransientException

但它是1.6的新手,我不相信我的数据库驱动程序是新的。我使用了很多DBMS并拥有很多客户端,所以依赖驱动程序是最新的很难。

除了搜索“约束”的异常消息之外,是否有通用的方法来检查这个pre-java 1.6?

2 个答案:

答案 0 :(得分:10)

不,没有一般的机制。它取决于您使用的数据库和JDBC驱动程序。

SQLExceptiongetErrorCodegetSQLState方法返回可用于确定给定异常的精细含义的信息,但您必须使其特定于驱动程序+数据库中。

Spring uses those same indications and a database-specific lookup table to translate SQLException into its own database-agnostic hierarchy of exceptions。你或许可以使用它,或者至少查看它的酸性代码,看看它是如何工作的。

答案 1 :(得分:2)

通常:不要指望数据库驱动程序始终返回“正确”的异常。最好检查一下:

  • SQL状态
  • 供应商代码
  • 实际的消息文本(取决于驱动程序!)