java - ErrorCode 和 SQLState 组合是否可以被视为某些异常的唯一 ID?

标签 java sql database jdbc error-code

一般来说,将 ErrorCode 和 SQLState 组合视为特定异常的唯一 ID,作为代码逻辑的基础是否安全?

更具体地说,DataDirect 是否遵循这样的事情?

另外对于我需要的确切案例, 我的代码生成以下异常:

[SQLServer JDBC 驱动程序]不支持更改默认可保持性...

以及以下内容:

System.out.println(">e.getErrorCode: " + e.getErrorCode());
System.out.println(">e.getSQLState: " + e.getSQLState());

正在回归:

>e.getErrorCode:  0
>e.getSQLStat: hy000

那么可以安全地假设,如果我检查 0 && hy00 那么我只过滤我之前提到的异常?

如果我可以获得说明此类事实的官方 DataDirect 文档的引用,将会非常有帮助。

最佳答案

不,你不能假设这一点。 SQLState HY000 只是一个通用 CLI SQL 错误(由 SQL CLI 标准定义),错误代码 0 表示“未设置特定错误代码”。通常,当没有更具体的可用信息或者开发人员没有指定任何其他内容时,驱动程序会使用 HY000 作为 SQLState。

即使一般情况下,单个 SQLState 也可以涵盖非常广泛的错误,并且单个错误代码(0 除外)是否用于一个错误或一组错误可能取决于数据库和错误的上下文。

关于java - ErrorCode 和 SQLState 组合是否可以被视为某些异常的唯一 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18363693/

相关文章:

sql - 此平面文件结构需要 MySQL DDL,提供示例 : input columns, 数据、输出表/列等

java - servlet 无法保存到数据库

mysql - 当 ID 是另一列的一小部分时,如何选择对象?

java - 自定义 Log4j 文件名

java - "Relaxed"Jackson 的字段名称

java - Comparator<T> 如何成为函数式接口(interface)?

sql - 使用 bacpac 导入数据层应用程序

sql - Rails 查询到 SQL 语句

database - 如何构建基于实体属性值数据库的数据仓库?

java - 从RequestListener派生的匿名类