2010-09-14 47 views
0

我有DB中的表, TableOne
通过一些规则我应该从这个表提交N个记录到其他表。
是否可以使用jdbc或ResultSet或CachedRowSet?向java提交一定数量的记录与java

初步流程,我看到:
ResultSet1.通过TableOne
2.增量counter如果某些条件得到满足
3.如果条件没有得到满足,这是时间承诺到其他数据库表N个记录= counter
4.承诺这些N记录

所以,问题是在步骤4.
它是如何实现的?

谢谢。

回答

0

该柜台的目的还不清楚,所以我打算假设您只是用它来说明您只提交符合条件的记录这一事实。

尝试构建做所有工作的INSERT语句:

INSERT INTO table2 (a, b, c) 
    SELECT a, b, c FROM table1 
WHERE myConditionIsMet 

另一种选择是在循环遍历记录集和每一个条件满足时插入一条记录。你应该把循环包装在一个事务中,这样循环完成之后才会提交。我的JDBC是一个有点生疏,所以这里是一个伪代码示例:

connection.startTransaction() 
for row in records 
    if row condition 
     connection.execute('INSERT ROW STATEMENENT') 
connection.commitTransaction() 

第一种方法是可取的,但有可能某些情况下不能在SQL表达式中确定的条件。

+0

谢谢你的回答。你是什么意思“在交易中包装”? – sergionni 2010-09-14 16:18:04

+0

@sergionni,如果你不明白我的意思是“在交易中包装”,你应该阅读数据库理论。我已经添加了一个例子,说明你会做什么,为什么有点超出你原来的问题范围。在这种情况下,我出于性能方面的考虑,但它对错误处理也有很大的影响。 – mikerobi 2010-09-14 16:52:53