【问题标题】:Figuring out 'Which Constraint' was violated from SQLException从 SQLException 中找出违反了“哪个约束”
【发布时间】:2011-10-18 07:38:38
【问题描述】:

我的代码可能会遇到许多不同约束的“约束冲突异常”(CVE)。为了向用户显示有意义的消息并采取特定操作,我正在解析getMessage() 返回的String。它可以工作,但很丑陋,而且肯定不容易维护。

我想知道是否有更好的方法?这一定是很常见的情况;有没有我可以遵循的模式或最佳实践?

谢谢。

【问题讨论】:

    标签: java jdbc exception-handling unique-constraint


    【解决方案1】:

    AFAIK,由于您对特定约束失败的情况感兴趣,因此无论您在做什么都是唯一的方法。

    我不确定你说的是哪个数据库,但你可以试试.. SQLException.getErrorCode()SQLException.getSQLState()。这些将为您提供更多信息,具体取决于数据库供应商。

    例如,在 Oracle 中,SQLException.getErrorCode() 只会告诉您违反了一个约束,而不一定是哪个约束。

    【讨论】:

    • 我正在使用 SQLServer 2005,将按照您的建议尝试getErrorCode() & getSQLState()。谢谢。
    猜你喜欢
    • 2017-11-17
    • 2015-08-30
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多