如何确定java中的数据库约束冲突?

如何确定java中的数据库约束冲突?,java,exception,jdbc,constraints,Java,Exception,Jdbc,Constraints,我依靠数据库来告诉我是否存在唯一性冲突,所以我想知道我得到的异常何时是某种约束冲突。看起来这正是我需要的:java.sql.sqlnontransienceexception 但它是1.6版的新版本,我不相信我的数据库驱动程序足够新。我使用了很多DBMS,有很多客户机,所以依靠驱动程序来更新是很困难的 除了在异常消息中搜索“constraint”之外,是否有一种通用的方法来检查java 1.6之前的版本?否,没有通用的机制。它取决于您使用的数据库和JDBC驱动程序 SQLException具有g

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

但它是1.6版的新版本,我不相信我的数据库驱动程序足够新。我使用了很多DBMS,有很多客户机,所以依靠驱动程序来更新是很困难的


除了在异常消息中搜索“constraint”之外,是否有一种通用的方法来检查java 1.6之前的版本?否,没有通用的机制。它取决于您使用的数据库和JDBC驱动程序

SQLException
具有
getErrorCode
getSQLState
方法,这些方法返回的信息可用于确定给定异常的确切含义,但必须使其特定于driver+数据库


。您可以使用它,或者至少看看它的SOURE代码,看看它是如何工作的。

一般来说:不要期望数据库驱动程序总是返回“正确”的异常。最好检查一下:

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

我不会依赖消息文本,因为一些(大多数?)驱动程序可能会根据客户端的语言环境返回本地化的错误文本。@a_horse_和_no_name您是对的(本地化非常烦人,顺便说一句:)谢谢您的帮助,您所说的正是我所期望的,也就是说,没有一种与供应商无关的方法来实现这一点。我可以用一种丑陋的方式来处理它,我只是想看看它有多丑陋。再次感谢!