当数据库返回唯一的密钥冲突异常时,我需要抛出特定的异常。为此,我使用getSQLState()和getErrorCode()来识别何时违反了唯一的键约束。
我想知道供应商特定的错误代码和SQL状态是否和多久被更改一次。
如果我使用sqle.getErrorCode()和sqle.getSQLState()来识别异常类型,那么我需要多久更改一次代码。
我正在测试的数据库是Postgres、Oracle和MySQL。代码看起来有点像这样
catch (SQLException sqle) {
if(sqle.getSQLState().equals(someSQLState) && sqle.getErrorCode() == someErrorCode) {
throw new SomeException(SomeParameters);
}
}发布于 2015-12-17 23:33:32
甲骨文-错误代码永远不会改变。没有书面保证,但错误代码是全面记录。我从未见过一次更改,而且Oracle肯定知道更改错误代码将是灾难性的。
PostgreSQL --上述答案(对于甲骨文)也适用于PostgreSQL。在文献资料中可以找到以下语句
需要知道发生了哪些错误条件的应用程序通常应该测试错误代码,而不是查看文本错误消息。错误代码在PostgreSQL版本中不太可能发生更改,而且也不会因为错误消息的本地化而发生更改。
MySQL -?
https://stackoverflow.com/questions/34335913
复制相似问题