我在here上定义了一些JDBC内容。
我基本上是从位于test.selectiontable
的一个表格11.11.1.111
)抓取记录并插入22.22.2.222
(test.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_vch
中test.selectiontable
的初始值为11.11.1.111
。
尽管我的代码中使用了上面两行代码来更新记录,但我认为这不是一种有效的更新方式。任何人都可以建议一些有效的方法来更新记录,100%确保这些记录不会重复。请随时建议我的代码中的任何更改。感谢
答案 0 :(得分:1)
您可以:
,而不是更新原始查询的ResultSetconnMain.setAutoCommit(false)
SELECT FOR UPDATE
WHERE id IN (...)
)connMain.commit()
3和4可以在同一个循环中完成。 顺便说一下,您还可以在远程数据源上启动事务并执行批量插入。 您还应该知道在try-catch块中执行事务并关闭资源。这可能有所帮助:http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html