public int getAllPages(int pageSize)
{
int i=0,num=0;
conn=this.getConnection();
String sql="select count(*) from bookInfo";
try {
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();

if(rs.next())
{
num=rs.getInt(1);
}
if(i%pageSize==0)
{
i=num/pageSize;
}
else
{
i=num/pageSize+1;
}
} catch (SQLException e) {
e.printStackTrace();
}finally
{
this.CloseAll(conn, pstmt, rs);
}
return i;
}

解决方案 »

  1.   

    应该问的是这一块代码的意思吧 // 如果查询结果不为空,则 取结果集中的第一个,
    //因为是 select count(*) ,所以结果只能有一行
                if(rs.next())
                {
                 // 把 sql语句统计的结果赋给 num 
                 // 好久没用这种方式了,不知道这一块 是  getInt(1) 还是 getInt(0)
                    num=rs.getInt(1); 
                }
                
                //如果 i 整除  pagesize , 那么 刚好总页数应该是  num / pageSize
                //比如结果有 100个 , 即 num = 100, 每页 显示20条数据,那么就是 pageSize = 20
                //这个时候 刚好是 100/20 = 5页
                //这一块感觉因该是  if(num % pageSize )
                if(i%pageSize==0)  //此处应该写错了,换成 num % pageSize == 0
                {
                    i=num/pageSize;
                }    
                else
                { 
                 //如果 num % pageSize != 0 
                 //比如此时 num = 110 , 而pageSize = 20 , 这个时候
                 //num % pageSize = 10  != 0 , 那么也就是说 num / pageSize != 整数
                 //而如果 num / pageSize  = x.y , x.y不为整数 , 那么x.y 肯定 大于 x
                 //因为这个是整数除法,所以  num / pageSize = x 而不是 x.y ,
                 //这样的话 也就是最后一页不满 20条 ,但仍旧有一页 ,所以 结果应该是  x + 1
                    i=num/pageSize+1;
                    }