SQLException.getSQLState
检索SQLState
为了SQLException
目的。此方法可以返回哪些可能的值?我可以使用该值来识别数据库中发生的特定错误(即该值可以告诉我它是否是 PK 违规、唯一约束或列值太大等)?
另外,DatabaseMetaData.getSQLStateType()
方法应该表明是否SQLSTATE
由返回SQLException.getSQLState
是 X/Open(现在称为 Open Group)SQL CLI 或 SQL99。唯一可能的值应该是DatabaseMetaData.sqlStateXOpen == 1
and DatabaseMetaData.sqlStateSQL99 == 2
但我得到了价值0
。我错过了什么吗?
有没有一种方法可以使用上述方法的组合来确定数据库中发生的特定错误类型?我可以信赖以下的值吗SQLException.getSQLState
?这些值对于不同的数据库提供商有不同吗?
显然,可以以相对较高的价格从 ANSI 和 XOpen 购买包含 SQLStates 的官方文档。
但是,大多数数据库的文档都有 SQLState 列表。可能最完整(且易于访问)的在线列表位于 DB2 手册中。检查DB2 通用消息手册 https://www.ibm.com/support/knowledgecenter/en/SS6NHC/com.ibm.swg.im.dashdb.messages.doc/doc/rdb2stt.html, 例如。 Oracle(需要 TechNet 密码)和 Sybase 等也有在线列表。
关于第二个问题,这是SQLState的本意,但是各个数据库的遵从程度不同。例如,某些将多个本机错误消息映射到同一个 SQLState。对于一般用途,人们可能应该专注于主要代码(SQLState 的前两个字符),然后确定次要代码中是否有更具体的信息(超过 000。)
http://www.jguru.com/faq/view.jsp?EID=46397 http://www.jguru.com/faq/view.jsp?EID=46397
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)