代码:
i1=1;
for (i = 0; i < 2000; i++,i1++){
  if(user[i]==null||user_name[i]==null)continue;
  sql4="update JQBD set user='"+user[i]+"',user_name='"+user_name[i]+"' where num='"+num[i]+"'";
  stmt1.executeUpdate(sql4);
  System.out.print(df.format((float)(i1)/(float)(2000)*100));
  p("%  插入数据");
  p(i1);
 }
为什么当 i1=1998的时候会出现ResultSet is closed 的异常?请大家指教,急

解决方案 »

  1.   

    这个应该不是,i1和i的范围没关系,只要没循环一次只是给i1加1而已,没有相互影响
      

  2.   

    num[i]在i=1998时越界了吧 还是没有这一项 你看一下吧
      

  3.   

    操作数据库时要及时的关闭连接,我估计你的数据库已经超出连接上限。
    每次stmt1.executeUpdate都会建立一个连接
    建议你以100或500为一组插入
      

  4.   

    操作数据库时要及时的关闭连接,我估计你的数据库已经超出连接上限。
    每次stmt1.executeUpdate都会建立一个连接
    建议你以100或500为一组插入
    试试看
      

  5.   

    能说详细点么,我的确是在程序中多次用到了stmt1.executeUpdate
      

  6.   

    每个数据库连接打开的游标数都有限制的,应该是游标数超过限制了吧?
    解决的思路是用同一数据库连接,不过每次用过的statement都关闭掉,下次更新再重新建一个statement