我已经检查了几个executeBatch的例子,但似乎我们只能批量添加一种语句。但我手头有一个问题,我需要执行2个更新查询,然后执行一个插入查询。有没有办法批量生产。
我必须从一组XML文件中解析大约100,000条记录,并为每条记录更新我的数据库。每条记录都包含一个要插入DB的日期范围。例如,如果我在DB
中有以下2条记录 Record A - range of 1st Jan 2000 to 31st Dec 2010
Record B - range of 1st Jan 2011 to 31st Dec 2020
现在,如果新记录来自以下范围
Record N - range of 1st Jan 2005 to 31st Jan 2014
要添加此记录,我需要执行以下2个更新查询和一个插入查询
Update end date of Record A to 31st Jan 2004
Update start date of Record B to 1st Jan 2015
Insert record N
我想知道我是否可以进行批量执行2更新和1次插入然后移动到下一条记录等等。
我可以使用单独的批次进行插入和更新,但是假设要对尚未插入的记录进行更新,反之亦然,我会遇到问题。所以顺序很重要。谢谢你的帮助
答案 0 :(得分:1)
不可能进行异源配料。
如果你正在使用Prepared Statements(你应该这样做),那么异步批处理是不可能的,因为PS创建会在更新时试图绑定你的变量而变得混乱,它不会工作。但是,您可以编写一个带
的存储过程 ([RecordIds to update], endupdate, startupdate, startinsert, endinsert ,[other_details])
作为参数。然后,在检查条件后,使用相应的值
执行您的程序RecordAid, endupdate, RecordBid, startupdate, RecordNid, startinsert, endinsert
注意:这将消除批处理的优点。它将与执行两个更新然后插入一样好。我宁愿建议将更新一起批处理并单独运行插入。