一条mysql语句进行分页

50 篇文章 0 订阅
45 篇文章 0 订阅
 

数据库是mysql

create database bbs;

 

use bbs;

 

create table article

(

id int primary key auto_increment,

pid int,

rootid int,

title varchar(255),

cont text,

pdate datetime,

isleaf int #1-not leaf 0-leaf

);

 

insert into article values (null, 0, 1, '蚂蚁大战大象', '蚂蚁大战大象', now(), 1);

insert into article values (null, 1, 1, '大象被打趴下了', '大象被打趴下了',now(), 1);

insert into article values (null, 2, 1, '蚂蚁也不好过','蚂蚁也不好过', now(), 0);

insert into article values (null, 2, 1, '瞎说', '瞎说', now(), 1);

insert into article values (null, 4, 1, '没有瞎说', '没有瞎说', now(), 0);

insert into article values (null, 1, 1, '怎么可能', '怎么可能', now(), 1);

insert into article values (null, 6, 1, '怎么没有可能', '怎么没有可能', now(), 0);

insert into article values (null, 6, 1, '可能性是很大的', '可能性是很大的', now(), 0);

insert into article values (null, 2, 1, '大象进医院了', '大象进医院了', now(), 1);

insert into article values (null, 9, 1, '护士是蚂蚁', '护士是蚂蚁', now(), 0);

 

<%@ page language="java" contentType="text/html; charset=gbk"

    pageEncoding="gbk"%>

<%@ page import="java.sql.*" %>

 

<%

Connection conn = null;

ResultSet rs=null;

Statement stmt=null;

//定义页数

 int pageSize=4;

 //第一页

    int pageNum=1;

     //sql语句中的分页位置

     int startPos=0;

      //判断是否字符串空,作用是防止第一次运行时会是空的

     if(("").equals(request.getParameter("pageNum"))|| null ==request.getParameter("pageNum")){

        pageNum=1;

     }else{

     //存储传过来的页数

        pageNum=Integer.parseInt(request.getParameter("pageNum"));

     }

     //如果出现-1页的情况则转到第一页中

     if(pageNum<=0){

     pageNum=1;

     }

     

    try{

      

      

       Class.forName("com.mysql.jdbc.Driver");

       conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bbs", "root" , "root");

        

       String sql="select count(*) from article where pid=0";

       stmt = conn.createStatement();

       rs = stmt.executeQuery(sql);

       rs.next();

       //System.out.println("rs.getInt(1)/4)%2==0 =="+((rs.getInt(1)/4)%2==0) );

       //这个可以算出一共是几页,也就是最后一面,如果是奇数,那么说明有条不能完整的凑成一页,但他们也得占一页

       int totalPage=(rs.getInt(1)/4)%2==0 ? rs.getInt(1)/4+1:rs.getInt(1)/4;

       //当下一页超过最后一页时,把最后一页给下一页

       if(pageNum>totalPage){

       pageNum=totalPage;

       }

       System.out.println("totalPage"+totalPage);

       %>

         <a href=index.jsp?pageNum=1>第一页</a>

         <a href=index.jsp?pageNum=<%=pageNum-1 %>>上一页</a>

         <a href=index.jsp?pageNum=<%=pageNum+1 %>>下一页</a>

        <a href=index.jsp?pageNum=<%=totalPage %>>最后一页</a>

        <br>

       <%

        System.out.println("rs.getInt(1)"+rs.getInt(1));

    }catch(ClassNotFoundException e){

       e.printStackTrace();

    }catch(SQLException ex){

       ex.printStackTrace();

    }

     

 

%>

<%

//因为下面的SQL语句的分页需要开始位置,

//每页4条,一共可分7页,这都是从数据库中自己计算出来的结果

     startPos=pageSize*(pageNum-1);

      System.out.println("startPos="+startPos);

     String sqlStr="select * from article where pid=0 limit "+startPos+", "+pageSize+"; ";

     stmt=conn.createStatement();

     rs=stmt.executeQuery(sqlStr);

     while(rs.next()){

    %><%=rs.getString("title") %><br><%

     }

   

%>

<!DOCTYPE html PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gbk">

<title>Insert title here</title>

</head>

<body>

 

</body>

</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值