【问题标题】:Updates and Deletions not working with DB2 in XPagesXPages 中的更新和删除不适用于 DB2
【发布时间】:2012-03-01 15:31:40
【问题描述】:

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

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

请帮忙。 提前谢谢你。

【问题讨论】:

    标签: jdbc db2 xpages


    【解决方案1】:

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

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

    关于本文档。

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

    【讨论】:

    • 嗨。我会在星期一检查一下。非常感谢您的反馈。
    猜你喜欢
    • 1970-01-01
    • 2014-07-05
    • 2019-07-14
    • 2020-11-04
    • 2021-09-10
    • 2020-03-25
    • 1970-01-01
    • 2015-06-16
    • 2021-07-25
    相关资源
    最近更新 更多