2

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

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 时,它可以工作并且记录会更新......

4

1 回答 1

0

您的问题是您试图在未“记录”的表上使用事务 - 即为事务设置。

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

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

于 2013-05-22T15:36:06.713 回答