如何从SQLException对象获取SQLException原因

时间:2012-03-12 02:55:26

标签: java jdbc sqlexception

我正在使用JDBC,并且正在运行查询。有没有办法从返回的SQLException对象中获取失败的原因?

特别是,我想知道我的查询是否违反了外键约束(以及哪一个)或键约束。

这个结果会特定于供应商吗?以防万一,我正在使用postgresql-8.4-701.jdbc4.jar驱动程序。如果它是特定于供应商的,我会在哪里找到代码?

编辑:我想动态地这样做 - 即

if(violated foreign key constraint on attribute x) {
     return 5;
} else if (violated primary key constraint) {
     return 7;
} else {
     return 0;
}

或类似的东西。

编辑:根据this post,PostgreSQL JDBC没有特定于供应商的错误代码。不知道如果那仍然有效。

2 个答案:

答案 0 :(得分:4)

您可以从SQLException对象处理错误代码。

sqlException.getErrorCode()

这将检索此SQLException对象的特定于供应商的异常代码。通过使用特定于供应商的错误代码,您可以分支到所需的代码块。

答案 1 :(得分:0)

尝试打印堆栈跟踪(e是SQLException类型)

e.printStackTrace()

或收到消息

e.getMessage()

这些可能会让您解释查询失败的原因