while(rs.next()){
                String zg_no = rs.getString("zg_no");
                for(i = 0;i<=jTable1.getRowCount()-1;i++){
                        if(change_datas[i][0].equals(zg_no)){
                        String value = "update ZG set"+" name='"+change_datas[i][1]+"'"+","+"password='"+change_datas[i][3]+"'"+"where zg_no='"+change_datas[i][0]+"'";
                        sql.executeUpdate(value);
                         JOptionPane.showMessageDialog(new DlJFrame(), "修改成功", "成功", 1);
                    }
                }
                
            }
为什么执行sql.executeUpdate(value);后外层while循环不再执行,如果不执行这一句外层while循环就多次执行?提示java.sql.SQLException: ResultSet is closed异常,请高手指点。谢谢

解决方案 »

  1.   

    sql.executeUpdate(value) 你在这个函数中是不是把数据库的链接关闭了?
      

  2.   

    肯定是sql.executeUpdate(value);里commit了,这种情况,用两个connect来处理,一个用来查询循环用,一个用来update。
      

  3.   

    sql.executeUpdate(value);会导致原来的rs自动关闭
    要避免这种情况,必须另起一个conection来执行executeUpdate(value)
      

  4.   

    多谢各位!我的程序执行完一次查询之后rs就自动关闭了,所以循环只执行一次。我的解决方法是用createStatement(int i,int j,int k)创建Statement对象的时候加上三个参数,第三个用ResultSet.HOLD_CURSORS_OVER_COMMIT 表示修改提交时,不关闭ResultSet的游标。这样就可以了。。