源程序如下: 
strSQL = "select ID from BBSBOARD";
conn = CPoolCommon.getConnection();
stmt = conn.prepareStatement(strSQL);
rs = stmt.executeQuery();
strSQL1 = "update BBSBOARD set LIMIT=0 where ID=?";
stmt1 = conn.prepareStatement(strSQL1);
while(rs != null && rs.next())
{
stmt1.setInt(1,rs.getInt(1));
stmt1.addBatch();
} int insertarr[] = stmt1.executeBatch();
int insernums = 0;
//out.println("insertarr.length:"+insertarr.length);
    for (int i = 0; i < insertarr.length; i++)
    {
        insernums += insertarr[i];
    }
out.println("insernums:"+insernums);使用executeBatch()返回的是一个负数的数组,insernums=-82,共有41条sql语句加入到批处理中.高手帮忙找下原因.提供方向也行,我自己找!~~

解决方案 »

  1.   

    Statement有executeBatch(),PreparedStatement没有
      

  2.   

    stmt1.addBatch(); 里面什么也没加,可以编译通过?
      

  3.   

    You have misused addBatch method of Statement Class.
    可以这样用:
    strSQL1 = "update BBSBOARD set LIMIT=0 where ID=?";
    stmt1 = conn.prepareStatement(strSQL1);
    while(rs != null && rs.next())
    {
    stmt1.setInt(1,rs.getInt(1));
    stmt1.addBatch();
    }
    将stmt1.addBatch()改为stmt1.executeUpdate(),它有返回值。
    要么,你就将strSQL1在循环里写成hard code.
    再调用stmt1.addBatch(strSQL1)
    OK?