当前位置: 代码迷 >> Java相关 >> 为什么执行只是更新一条数据,帮看看,该怎么处理
  详细解决方案

为什么执行只是更新一条数据,帮看看,该怎么处理

热度:383   发布时间:2013-02-25 21:47:25.0
为什么执行只是更新一条数据,帮看看
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循环的外面,这样就说明执行修改成功后没有异常才可以提交事物!
  相关解决方案