簡體   English   中英

記錄未使用ResultSet更新

[英]Records are not getting updated with ResultSet

我在這里定義了一些JDBC東西。

我基本上是從位於11.11.1.111一個表( test.selectiontable )中獲取記錄,並將其插入22.22.2.222test.insertiontable )。 這是一個基於線程的過程,因此線程將繼續查找和傳輸記錄,直到所有記錄都被傳輸為止。

由於我不想在另一個表中插入重復的記錄,因此我在test.selectiontable有一個名為DTSStatusType_ti的字段,該字段在表中的初始值為1 因此,在將記錄傳輸到test.insertiontable后,我將對其進行更新,如下所示:

Line # 112  SelectQueueRS.updateInt( "DTSStatusType_ti", 3 );
Line # 113  SelectQueueRS.updateString( "Queued_DialerIP_vch", 22.22.2.222 );   

Queued_DialerIP_vchtest.selectiontable的初始值為11.11.1.111

盡管使用我的代碼中的以上兩行代碼來更新記錄,但是我認為這不是一種有效的更新方法。 任何人都可以提出一些有效的記錄更新方法,並100%確保這些記錄永遠不會重復。 請隨時提出我的代碼中的任何更改建議。 謝謝

除了更新原始查詢的ResultSet之外,您還可以:

  1. 使用connMain.setAutoCommit(false)啟動事務
  2. 如果其他人可以修改數據,則應使用SELECT FOR UPDATE鎖定選定的行
  3. 從查詢結果中收集主鍵ID
  4. 將插入到遠程數據源
  5. 通過收集的ID( WHERE id IN (...) )使用一個更新查詢更新原始表
  6. 使用connMain.commit()提交事務

3和4可以在同一周期內完成。 順便說一下,您還可以在遠程數據源上啟動事務並進行批量插入。 您還應該注意在try-catch塊中進行事務並關閉資源。 這可能會有所幫助: http : //docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM