更新和删除不适用于XPage中的DB2

时间:2012-02-09 06:07:02

标签: jdbc db2 xpages

我一直在努力使用853 Extension Library中的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,因此它不能成为访问问题,特别是因为我可以插入记录。我尝试使用Connection Manager Control并设置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();

我花了很多时间来做这件事,现在我的思绪很难理解。

请帮忙。 提前感谢你。

1 个答案:

答案 0 :(得分:0)

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

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

在此文档上。

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