0

我一直在努力使用 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();

我已经花了很多时间在这上面,现在我的脑子里一片混乱。

请帮忙。提前谢谢你。

4

1 回答 1

0

我还没有尝试过 ext lib 的这一部分,但是我确实注意到您的语法与我记忆中的不同,它看起来像这样:

@JdbcUpdate("dt2","users",v,"id=?",id)

在这个文档上。

http://library.constantcontact.com/download/get/file/1102786224071-334/2011NOV18+XPages+Goes+Relational.pdf

于 2012-02-09T14:09:47.360 回答