我正在使用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没有特定于供应商的错误代码。不知道如果那仍然有效。
答案 0 :(得分:4)
您可以从SQLException对象处理错误代码。
sqlException.getErrorCode()
这将检索此SQLException对象的特定于供应商的异常代码。通过使用特定于供应商的错误代码,您可以分支到所需的代码块。
答案 1 :(得分:0)
尝试打印堆栈跟踪(e是SQLException类型)
e.printStackTrace()
或收到消息
e.getMessage()
这些可能会让您解释查询失败的原因