SQLException.getSQLState的所有可能值是什么?

17 java sql exception jdbc

SQLException.getSQLState检索SQLStateSQLException对象.此方法可以返回的所有可能值是什么?我可以使用该值来识别数据库中存在的特定错误(即,此值是否可以告诉我它是PK违规,还是唯一约束,还是列值大等)?

此外,该DatabaseMetaData.getSQLStateType()方法应该指示SQLSTATE返回的是否SQLException.getSQLState是X/Open(现在称为Open Group)SQL CLI或SQL99.唯一可能的价值应该是DatabaseMetaData.sqlStateXOpen == 1,DatabaseMetaData.sqlStateSQL99 == 2但我得到的价值0.我错过了什么吗?

有没有办法可以使用上述方法的组合来确定DB中发生的特定错误类型?我可以指望它的价值SQLException.getSQLState吗?这些值是否与数据库提供程序不同?

mad*_*lor 5

显然,可以从ANSI和XOpen中以相对较高的价格购买包括SQLStates的正式文档。但是,大多数数据库的文档都有SQLState的列表。DB2手册中可能是最完整(可访问的)在线清单。例如,请查阅《DB2通用消息》手册。Oracle(需要TechNet密码)和Sybase等也都有在线列表。

关于第二个问题,这是SQLState的意图,但是,各种数据库具有不同程度的遵从性。例如,某些将多个本机错误消息映射到同一SQLState。对于一般用途,可能应该专注于主要代码(SQLState的前两个字符),然后确定次要代码(大于000)中是否有更具体的信息。

http://www.jguru.com/faq/view.jsp?EID=46397


小智 5

MySQL在服务器错误代码和消息的参考手册中提供了一些信息