如何使用jdbcRowSet回滚更新?

时间:2014-06-26 21:31:21

标签: xpages xpages-extlib

我可以使用acceptChanges,jdbcRowSet1.acceptChanges(); ,用我的jdbcRowSet数据源接受更改(更新,删除等)。我将如何回滚或取消任何更新,删除等。

我试过jdbcRowSet1.rollback();但是得到了一个错误。

执行JavaScript动作表达式时出错 脚本解释器错误,line = 1,col = 13:Java类中的未知成员'rollback''com.ibm.xsp.extlib.jdbc.model.JdbcRowSetAccessor'

JavaScript代码

1:jdbcRowSet1.rollback();

有人试过这个吗?

谢谢,霍华德

2 个答案:

答案 0 :(得分:1)

jdbcRowSet数据源当前不支持rollback()。我们可能会在未来添加对此的支持(无保证)。从我的阅读中,我们可以在jdbcRowSet实现中使用方法RowSet.cancelRowUpdates(),但它只取消对行的更新,并且不取消删除/插入。

您的问题的一个简单的潜在解决方案是通过javascript调用context.reloadPage()重新加载页面,这将丢弃当前的rowSet。简单的解决方案,但它可以帮助你。

答案 1 :(得分:0)

您的问题实际上不是XPage特有的,更多是关于Java中的一般SQL管理,所以如果您想要比我提供的更深入的答案,您可能想要更新您的标签。

您的连接很可能已将autocommit设置为true。这会强制数据集在您立即进行更改时提交更改,因此无需回滚。 rollback()方法来自与行集相关的连接对象,并且当autocommit为true时不会提供回滚,因此会出现错误。

您需要考虑将自动提交更改为false,然后确保在完成更改后调用commit()或rollback()。如果您发生了多个事务,则还应该查看连接管理器。我在IBM Press的扩展库书籍中关于SQL控件的章节中简要介绍了这一点。