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

rjc*_*arr 4 java exception constraints jdbc

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

但它是1.6的新功能,我不确定我的数据库驱动程序是否足够新.我使用了很多DBMS并拥有许多客户端,因此依赖于驱动程序是最新的很困难.

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

ska*_*man 10

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

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

Spring使用相同的指示和特定于数据库的查找表来转换SQLException为自己的数据库无关的异常层次结构.您可以使用它,或者至少查看它的酸性代码以了解它是如何工作的.