如何在Java中捕获ORA-28011或ORA-28002?

时间:2012-09-26 12:22:42

标签: java oracle jdbc passwords handle

我必须在我的应用程序中处理ORA-28011和ORA-28002。但这些ORA警告被JDBC压制(我认为) 我怎样才能在Java中捕获这些? 有什么JDBC属性吗?

我不希望从dba_users表直接查询状态。

谢谢!

1 个答案:

答案 0 :(得分:4)

它们被JDBC抑制。您可以使用Connection#getWarnings()Connection - 相关警告)来检索数据库报告的第一个警告,然后使用SQLWarning#getErrorCode()获取抛出的特定于供应商的警告代码对于Oracle JDBC驱动程序,它将为您提供ORA号:

Connection connection;
// ...
SQLWarning warn = connection.getWarnings();
int errorCode = warn.getErrorCode();
if (errorCode == 28011) {
  // ORA-28011
} else if (errorCode == 28002) {
  // ORA-28002
}

如果您想获取更多警告,请使用SQLWarning#getNextWarning()

参考文献: