Java Update Sql 语句错误

标签 java sql db2

我正在尝试使用 Java 和以下代码更新 Db2 数据库:

String sSqlString = "UPDATE P6DEVCDB00.P6OSTAPF SET STATVAL = '" + sStatVal + "' WHERE  OPIID = '" + sOperationsitemid + "' AND CONGRPC = '" + sConfigGrpCode  + "'";

// Do your select on a Db table.
//statement = con.createStatement();
statement = con.prepareStatement(sSqlString);

int RowsAffected = statement.executeUpdate();
con.commit();
System.out.println(RowsAffected);

然后我得到以下错误:

DB2 SQL Error: SQLCODE=-7008, SQLSTATE=55019, SQLERRMC=P6OSTAPF  ;
P6DEVCDB00;3, DRIVER=3.58.81

我已经打印出它将要运行的 sql:

UPDATE  P6DEVCDB00.P6OSTAPF SET STATVAL = 'ON' 
WHERE   OPIID = 'B20120707000681531' AND CONGRPC = 'STKLSTSTAT

当我直接使用 SQLUI 工具运行此 sql 时,它可以工作并且记录得到更新......

最佳答案

您的问题是您试图在非“日志化”的表上使用事务 - 即事务设置。

理想情况下,您应该将所有表(将在事务下运行)设置为日志记录,专门用于测试该属性;无论是否能够模拟故障,您都需要确保您的代码能够处理事务。
此外,根据您的情况,您可能不需要显式管理事务。如果您使用的框架类似于 Spring ,他们通常可以为您管理事务,尽管这通常意味着您仍然需要在 iSeries 表上记录日志。

如果您只是想测试基本的代码行为,请考虑使用内存数据库,例如 HSQLDB (不幸的是,可以模拟某些 LUW DB2 行为,但不能模拟库列表)- 这将使您无需连接到您的盒子并设置日记。

关于Java Update Sql 语句错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16672175/

相关文章:

sql - 子查询返回每个父 ID 的最新条目

java - 如何在 SQL 中使用 NOT EXISTS 和 COMPOSITE KEYS 从 POJO 插入数据

java - 在此程序中,当我添加更多标签时,已准备好的标签不会显示。

MySQL,按动态字段排序

sql - 数据库设计: problem with updating a table

mysql - 如何优化这个慢速 sql 查询?

java - joda hibernate 时间到 DB2 DATE

javascript - 以不同模式从添加到企业站点列表的站点打开特定页面

java - IntelliJ 在调试前卡住大约 30 秒

java - 如何使用 "DFLT-X"方法编写 Zip 文件