读书人

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

发布时间: 2012-03-22 17:43:57 作者: rapoo

为什么执行只是更新一条数据,帮看看
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循环的外面,这样就说明执行修改成功后没有异常才可以提交事物!

读书人网 >Java相关

热点推荐