怎样在已经分完页的表格中查询带条件的行的信息如:
表A每页三行显示,字段有username,userid,gender,age
List<UserList> users = uso.getDB().queryByPage(page_no, pageCount);
users就是查询出来分页表的对象;
可是我按照常用方法,只查询了第一页的信息,后面的就不查询了。这是怎么回事

解决方案 »

  1.   

    queryByPage断点看看这个方法的参数是怎么样的,然后看看该方面里面是怎么运行的。
      

  2.   

    跟踪一下发到数据库的SQL语句是怎样的..然后把相应的语句放到数据库里面一运行就知道了..
    或者你可以把你分页的语句发来看下..
      

  3.   

    这个分页表格已经显示出来了,
    List<UserList> users = uso.getDB().queryByPage(page_no, pageCount);
    users就是查询出来分页表的对象;
    page_no的值为7页,pageCount=3
    我要查询的是users表中某一行的信息代码如下:
    List<UserList> users = uso.getDB().queryByPage(page_no, pageCount);
     String userName=request.getParameter("userName");
      List<UserList> selectUS=null;
          if(users!=null){
          
               if(userName!=null){
               selectUS=new ArrayList<UserList>();
                   int j=0;
                 for(int i=0;i<users.size();i++){
               if(userName.equals(users.get(i).getUsername())){
                    selectUS.add(j,users.get(i));
                      j++;
               }
                }
                if(j==0){
              out.println("<script type=\"text/javascript\">");
              out.println("alert(\"查询对象不存在,请重新查询!\");");
              out.println("open(\"User_Manage.jsp\",\"_self\");");
              out.println("</script>");
            return;
                }
              } else {
             selectUS=users;
              }
              }
                 pageContext.setAttribute("selectUS", selectUS);
             pageContext.setAttribute("page_no", page_no);
         pageContext.setAttribute("total_page", total_page);
          pageContext.setAttribute("userName", userName);
         现在的情况是:如果查询第一页的信息,可以查到,可是如果查询第二页以及以后的某行信息,他就说:没找到
      

  4.   

    补充一下:userName是从jsp页面中输入的要查询的字段的条件:即名字
      

  5.   

    你查询第二页或者之后的时候,有没有看看users这个集合是否返回数据了?断点跟踪一下users集合的值,或者sql语句单独拿出来执行看是否有结果。
    也有可能数据库第二页开始没数据了,如果users查出来确实有数据,再看看下面的逻辑判断有没有错啦。
    不过我估计是sql语句有误,导致第二次起users集合空值
      

  6.   


    不知道楼主你所说的常用的方法是指的什么方法?是指3楼公布的代码吗?
    楼主你在3楼公布的代码我大概看了下,该代码的就逻辑就是在
    uso.getDB().queryByPage(page_no, pageCount);
    返回的结果集中查找输入的内容,内部工作原理不清楚,偶猜测是使用了分页技术,从数据库
    取回的结果集中包含你指定的那页(page_no=7时就是第7页)的数据,也就是说你的查询只在
    第7页范围内进行查询。如果你要查询的范围不是当前页,并且querybypage方法返回的值确
    实如我所说只包含当前页的数据,那么你就应当改写算法,使用其它方法去获取查询列表的数
    据。
      

  7.   

    常用的方法:
    String userName=request.getParameter("userName");
    取到从JSP页面输入的名字值
    List<UserList> users = uso.getDB().queryByPage(page_no, pageCount);List<UserList>  selectUS=new ArrayList<UserList>();
    用for(int i=0;i<users.size();i++){
       if(userName.equals(users.get(i).getUsername())){
          selectUS.add(j,users.get(i));}
    如果条件成例的时候,所需这一行信息就会放入集合selectUS中,然后将这个集合传入到JSP页面中发部
    但是在这个分页集合中,他只查询第一页的信息,以后页数中的信息自动停止不查了,我是不明白为什么会是这样,难道那个分页查询的SQL语句将什么东东改变了吗所以我只好使用这个分页查询方法显示页面,然后再从查询所有表格信息中取我要的信息显示到JSP页面上,这个实现了,但是上面的那个没能实现。
    }
      

  8.   


    在7楼我已经说过,你的分页查询函数很有可能只返回了当前页的数据集,但是由于我不知道你分页查询内部的处理方式,只能怀疑,但是无法肯定,建议楼主你自己去看去分页查询函数的实现方式。假设你的查询结果是1000条记录,按照每页100条记录进行分页,那么你的分页查询uso.getDB().queryByPage(page_no, pageCount)返回的列表是100还是1000就很关键了,关系到你能不能查代到不在当前页的内容。
      

  9.   


    如果按楼主你users的内容中包括了全部的数据,那么这个问题有比较诡异了,因为你下面的循环查找代码中并没有分页部分的相关内容,你那里却出现了“只能查找第1页内容,不查找后面内容”的问题。楼主还是跟踪调试代码吧,偶帮不上你了。