如何从SQLException对象中获取SQLException原因

4
我正在使用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;
}

或类似的东西。

编辑:根据这篇文章,PostgreSQL JDBC 没有供应商特定的错误代码。不知道那是否仍然有效。

2个回答

5

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

sqlException.getErrorCode()

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


我试图寻找PSQL的代码,但是找不到。你有链接吗? - Daniel Kats
1
这里是 PLSQL 错误代码的链接:http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/07_errs.htm#784 - Rakesh

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

或获取信息

e.getMessage()

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


这很有帮助,但我正在寻找更具动态性(即自主性)的方法来实现这一点。 - Daniel Kats

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接