我可以使用acceptChanges,jdbcRowSet1.acceptChanges(); ,用我的jdbcRowSet数据源接受更改(更新,删除等)。我将如何回滚或取消任何更新,删除等。
我试过jdbcRowSet1.rollback();但是得到了一个错误。
执行JavaScript动作表达式时出错 脚本解释器错误,line = 1,col = 13:Java类中的未知成员'rollback''com.ibm.xsp.extlib.jdbc.model.JdbcRowSetAccessor'
JavaScript代码
1:jdbcRowSet1.rollback();
有人试过这个吗?
谢谢,霍华德
答案 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控件的章节中简要介绍了这一点。