public int modifyRoleID(String roleIDString,String organID)
    {
        int flag;
         try{
           sqlBuf.delete(0,sqlBuf.length());
           sqlBuf.append("UPDATE oa_organ SET roleID = '");
           sqlBuf.append(roleIDString);
           sqlBuf.append("' where id='");
           sqlBuf.append(organID);
           sqlBuf.append("' or parent_id='");
           sqlBuf.append(organID);
           sqlBuf.append("' ");
           //System.out.print(sqlBuf.toString() );
           flag=dbc.executeUpdate(sqlBuf.toString()) ;
           modifyUserRole(roleIDString,organID);
           ResultSet rs=queryParent(organID);
           rs.last();
           String[] organChildID=new String[rs.getRow()];
           rs.close();
           rs=queryParent(organID);
           int i=0;
           while(rs.next())
           {
           organChildID[i]=rs.getString("id");
           i++;
           }
           rs.close();
           for(i=0;i<organChildID.length;i++)
           {
             modifyRoleID(roleIDString,organChildID[i]);
           }
        }
        catch(Exception err)
        {System.out.print(err.getMessage()) ;
          return -1;
        }
        return flag ;
    }这样写就改对了

解决方案 »

  1.   

    我想是RS根本就不能保存信息的,第二次就被覆盖了,RS都不能创建实例的
      

  2.   

    ResultSet rs=queryParent(organID);
               rs.last();
               String[] organChildID=new String[rs.getRow()];
               rs.close();
               rs=queryParent(organID);
               int i=0;
               while(rs.next())
               {
               organChildID[i]=rs.getString("id");
               i++;
               }
               rs.close();
               for(i=0;i<organChildID.length;i++)
               {
                 modifyRoleID(roleIDString,organChildID[i]);
               }这段怎么改好呢,不然连了两次数据库,还有就是要有人拿分啊
      

  3.   

    同意ty_work(ty_work) 的,你可以试试
      

  4.   

    应该分开两个方法,第一个更新id = parent_id and parent_id = 'parent_id'第二个方法才更新子的,并在这个方法中递归,重复更新子id,不然你第一第二次都要更新同一个父的,可能数据库锁冲突才报错了一家之言:)