日期:2014-05-20  浏览次数:20865 次

为什么执行只是更新一条数据,帮看看
String sql1 = "select first 10 * from loancib:AGGREGATE_MEMBER " ; 
pstm = con.prepareStatement(sql1);
rs = pstm.executeQuery();
int i = 1;
while(rs.next()){
String sql = "update AGGREGATE_MEMBER set Reason=? where CustomerNo=? ";
pstm = con.prepareStatement(sql);
String str = rs.getString("Reason") ; 

if(str!= null){
pstm.setString(1, str);
pstm.setString(2, rs.getString("customerid"));
pstm.addBatch();

if(i==1000){
con.setAutoCommit(false);
pstm.executeBatch();
con.setAutoCommit(true);
pstm.clearBatch();  
i=0;
con.commit();

}
System.out.println("success!"+i);
i++;
}

------解决方案--------------------
你断点进去看看 执行顺序
------解决方案--------------------
断点一下吧。这个一下看不出问题了
------解决方案--------------------
这里:pstm = con.prepareStatement(sql);
每次循环的时候都会生成个新的prepareStatement,所以只能更新一条数据。

------解决方案--------------------
探讨
呵呵,拿到循环外面去啊。

String sql = "update AGGREGATE_MEMBER set Reason=? where CustomerNo=? ";
pstm = con.prepareStatement(sql);

拿到While上面去。

------解决方案--------------------
放在while循环的外面,这样就说明执行修改成功后没有异常才可以提交事物!