我在做分页的时候,碰到一个问题,就是第二页还会显示第一页的最后一个数据,代码部分如下:
/**
* 分页方法,根据指定页列出学生的信息
* 根据tid,当tid为零,显示所有学生信息,其他均为老师的id
* @param students
* @param pageSize 页的大小
* @param pageNo 当前页
* @param tid 老师的ID号
* @return total 总记录数
* @throws Exception
*/
public int listStudent(List<Student> students,int pageSize,int pageNo,int tid)throws Exception{
int total=0;
String sql1="select top "+pageSize+" s.susername,s.sname,t.tname,s.ssex,s.stelephone,s.semail "
+" from student s left join teacher t on(s.tid=t.id) where "
+"(s.id not in(select top "+(pageNo-1)*pageSize+" s.id from student s order by s.id))order by s.id";
String sql2="select top "+pageSize+" s.susername,s.sname,t.tname,s.ssex,s.stelephone,s.semail "
+" from student s left join teacher t on(s.tid=t.id) where s.tid="+tid
+" and (s.id not in(select top "+(pageNo-1)*pageSize+" s.id from student s order by s.id)) order by s.id";
conn=DB.getConnection();
Statement stmtCount=null;
stmtCount=DB.getStatement(conn);
if(tid==0){
rs=stmtCount.executeQuery("select count(*) from student");
}else{
rs=stmtCount.executeQuery("select count(*) from student s where s.tid="+tid);
}
while(rs.next()){
total=rs.getInt(1);
}
rs=null;
stmt=DB.getStatement(conn);
if(tid==0){
rs=stmt.executeQuery(sql1);
}else{
students.clear();
rs=stmt.executeQuery(sql2);
}
while(rs.next()){
Teacher t=new Teacher();
t.setName(rs.getString("tname"));
Student s=new Student();
s.setUsername(rs.getString("susername"));
s.setName(rs.getString("sname"));
s.setSex(rs.getString("ssex"));
s.setTelephone(rs.getString("stelephone"));
s.setEmail(rs.getString("semail"));
s.setTeacher(t);
students.add(s);
}
stmtCount.close();
DB.close(rs, stmt, conn);
return total;
}
代码中两条sql语句,第一条显示所有学生是正常,但是第二条就出现上述的问题了。两条都差不多了,还是有错误,请大家帮忙看看,谢谢!