2

我正在使用驱动程序访问可用作 ODBC 数据源的IBM DB2数据表。sun.jdbc.odbc.JdbcOdbcDriver

我遇到的问题是,当我执行DELETE FROM tableusingjava.sql.Statement.executeUpdate(String),并且表为空时,java.sql.SQLException会抛出 (预期的行为是应该返回 0)。异常消息是“未找到数据”

这是我第一次接触IBM DB2,所以我的问题是,该数据库上的预期行为是什么?或者这是可以在数据库级别配置的东西?或者它是特定于 ODBC 的东西?

如果这是标准行为,我应该如何从真正的异常中识别出“异常”?我不喜欢为业务逻辑解析异常消息,但如果有必要,我可以期待它总是“找不到数据”吗?

我试图用谷歌搜索该行为的规范,但我没有找到该案例的文档。

4

1 回答 1

2

这是完全正常的。DB2 没有发现任何要删除的内容,并返回此警告。

很多数据库的状态都是一样的:sqlstate 02000。在谷歌上看一下,你会发现其他的RDBM也有相同的代码。不过DB2有sqlcode说明原因,而对于这个sqlstate,对应的code是sql0100W。

在使用 DB2 时,您必须处理这种行为,这是一个 SQLWarning(sqlcode 末尾的 W)。

http://publib.boulder.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.messages.sql.doc/doc/msql00100w.html

下一次,看看sqlcode。它将帮助您在使用 DB2 时发现问题。

于 2013-05-03T14:49:11.433 回答