我一直在努力使用 853 扩展库中的 JDBC 从 XPages 更新和删除 DB2 中的记录。
首先,我可以确认 @JDBCInsert 工作正常。我还可以通过许多不同的方式查看来自 DB2 的数据。但是,当尝试执行更新或删除时,它就不起作用了。
我的第一次尝试是使用 JDBCRowSet 数据源。这里的想法是使用缓存结果集,然后最后将更改提交到 DB2。我能够通过修改值和执行删除操作缓存结果集,但是当我运行 dataset.acceptChanges() 函数时,我收到以下消息:
在 java 类“com.ibm.xsp.extlib.jdbc.model.JdbcRowSetAccessor”上调用方法“acceptChanges()”时出错
日志中的另一条消息是:
DB2 SQL 错误:SQLCODE=-270、SQLSTATE=42997、SQLERRMC=53、DRIVER=3.57.82
我以管理员身份登录 DB2,所以这不是访问问题,尤其是因为我可以插入记录。我尝试使用连接管理器控件并设置 AutoCommit = true,但这不会改变返回的错误。
因此,我的下一个尝试是使用 @JDBCUpdate 执行更新,而不是使用缓存的结果集。此函数不起作用,但也不会返回错误。几乎就像什么都不做一样。
最后,我尝试使用@JDBCExecuteQuery 来执行更新,但我收到一条消息,说我不允许使用此函数执行更新。
以下是我尝试失败的一些示例:
//这是我要更改的值,我解析为 JSON。
var v = {
VENUE_NAME: getComponent("inputVenue").getValue(),
ADDRESS: getComponent("inputTextareaAddress").getValue(),
TEL_NUMBER: getComponent("inputTelNumber").getValue(),
CELL_NUMBER: getComponent("inputCellNumber").getValue(),
EMAIL: getComponent("inputEmail").getValue(),
RATE: getComponent("inputRate").getValue(),
INCLUDES: getComponent("checkIncludes").getValue()
}
@JdbcUpdate("db2","TABLE",v, "ID = 123");
@JdbcUpdate("db2","TABLE",v, "ID = '123'");
//此插入函数使用相同的 JSON 数组有效。
@JdbcInsert("db2","TABLE",v);
//我在尝试使用 RowSet 提交更改时使用它,它返回上述错误消息
JDBCRowSet.acceptChanges();
我已经花了很多时间在这上面,现在我的脑子里一片混乱。
请帮忙。提前谢谢你。