Java 枚举中的标准SQLStates

Java 枚举中的标准SQLStates,java,sql,jdbc,Java,Sql,Jdbc,我希望有一个包含所有标准SQLStates的枚举,以便我可以: 以编程方式响应预期的SQL故障。例如,我想重试由于竞争条件而失败的操作。例如,一个线程删除另一个线程引用的行,或者两个线程尝试插入相同的记录,从而触发唯一约束冲突 快速查找错误的含义。关于SQLStates似乎没有一个包罗万象的文档,尤其是它们的含义 我花了很长时间来整理这些信息。我希望这能帮助别人 欢迎您的贡献 (我无法在Stackoverflow上发布源代码,因为它超过30000个字符)包含处理这些异常所需的所有数据。请注意,S

我希望有一个包含所有标准SQLStates的枚举,以便我可以:

  • 以编程方式响应预期的SQL故障。例如,我想重试由于竞争条件而失败的操作。例如,一个线程删除另一个线程引用的行,或者两个线程尝试插入相同的记录,从而触发唯一约束冲突
  • 快速查找错误的含义。关于SQLStates似乎没有一个包罗万象的文档,尤其是它们的含义

  • 我花了很长时间来整理这些信息。我希望这能帮助别人

    欢迎您的贡献


    (我无法在Stackoverflow上发布源代码,因为它超过30000个字符)

    包含处理这些异常所需的所有数据。请注意,SQL代码会因RDBMS的不同而有所不同。问题是什么?@MarkRotteveel,很抱歉。这篇文章是为了对社区做出贡献。我没有意识到这个问题会在答案出现之前就显现出来。我个人觉得答案中提到的实用工具很有用(即使是一种自我提升)。投票决定重新开始这个问题。另外,该实用程序位于Maven central中,因此在您的
    fromCode
    方法中提到依赖项:
    org.bitbucket.cowwoc:sqlstate:1.1
    会很有帮助,如果找不到匹配的枚举,您将抛出
    IllegalArgumentException
    。数据库按照规范被允许使用附加的SQL状态(既作为现有代码中的子代码,或者在供应商特定的类别中),因此我不认为它是一个特殊的条件。“MarkRotteveel,你能提供一个来源吗?”我可以在规范的哪里找到这一点?在ISO/IEC 9075-2:2011(又名SQL 2011基金会)第24章“状态代码”中;请注意,本标准的其他“手册”定义了附加代码,而非附表中列出的代码(例如PSM手册(ISO/IEC 9075-4:2011)和CLI手册(ISO/IEC 9075-3:2003;不确定CLI是否在2011年更新)列出了附加代码)@MarkRotteveel,感谢您的反馈。我已经提交了一个更新,添加了一个特定于实现的枚举常量。