2014-06-26 16 views
0

我可以使用acceptChanges,jdbcRowSet1.acceptChanges(); ,用我的jdbcRowSet數據源來接受更改(更新,刪除等)。我將如何回滾或取消任何更新,刪除等?如何使用jdbcRowSet回滾更新?

我試過jdbcRowSet1.rollback();但有一個錯誤。

錯誤而執行JavaScript動作表達 腳本解釋器誤差,線= 1,列= 13:在Java類未知的成員 '回滾' 'com.ibm.xsp.extlib.jdbc.model.JdbcRowSetAccessor'

JavaScript代碼

1:jdbcRowSet1.rollback();

任何人都試試這個嗎?

感謝,霍華德

回答

1

jdbcRowSet數據源當前不支持rollback()。我們可能會在未來增加對此的支持(不保證)。從我的閱讀中,有一個方法RowSet.cancelRowUpdates(),我們可以在我們的jdbcRowSet實現中使用它,但它只取消行更新,並且不取消刪除/插入。

針對您的問題的一個簡單的潛在解決方案是通過javascript調用,context.reloadPage()重新加載頁面,並放棄當前rowSet。簡單的解決方案,但它可能會爲你做的伎倆。

+0

謝謝,是的,我想reloadPage()會工作,類似錘子的方法...感謝您的反饋! – Howard

0

你的問題實在是少的XPages具體,更多關於Java中一般SQL管理,所以如果你想有一個更深入的答案比我提供,你可能需要更新您的標籤。

很可能您的連接將自動提交設置爲true。這會強制數據集立即提交更改,因此沒有任何回退。 rollback()方法來自與行集相關的連接對象,並且在autocommit爲true時不會提供回滾,因此會出現錯誤。

您需要考慮將自動提交更改爲false,然後確保在完成更改時調用commit()或rollback()。如果您有多個事務發生,您也應該查看連接管理器。我在IBM Press的擴展庫書籍的關於SQL控件的章節中簡單介紹了這一點。

+0

不,自動提交是錯誤的。我必須調用jdbcResultSet1.acceptChanges來接受我的更改。這實際上類似於JDBC_RowSetDatasource XPage中的XPagesJDBC.nsf中的演示。有一個接受更改按鈕。我想添加一個取消更改按鈕。謝謝,霍華德 – Howard