Maison >base de données >tutoriel mysql >Mysql和Oracle数据库中的分页查询_MySQL

Mysql和Oracle数据库中的分页查询_MySQL

WBOY
WBOYoriginal
2016-06-01 13:33:001213parcourir

bitsCN.com

Mysql和Oracle数据库中的分页查询

 

方法一:mysql数据库分页

    //定义每一页显示的记录

int pageSize = 3;

String strPageNo = request.getParameter("pageNo");

        //记录当前页面

int pageNo;

        //如果传入的当前页码为空,停留在第一页

if(strPageNo == null || strPageNo.equals(""))

{

pageNo = 1;

}

else

{

 try

                //把传进来的字符串转化成数字

{

pageNo = Integer.parseInt(strPageNo.trim());

}

 

catch(NumberFormatException e)

 

{

 

pageNo = 1;

 

}

                    //如果页码小于或者等于0停留在第一页

if(pageNo

{

pageNo=1;

}

}

 

//连接数据库

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

Connection conn = DriverManager.getConnection

("jdbc:mysql://localhost/bbs?user=root&password=mingming");

Statement stCount = conn.createStatement();

ResultSet rsCount = stCount.executeQuery

("select count(*) from article where pid=0");//查询共有多少个根节点

rsCount.next();

int totalRecord = rsCount.getInt(1); //拿到所有的子节点,计算出总共有多少条记录

 

//   第一种方法        计算得到总的页数,如果能被整数,页数就是商,否则就是商+1

int totalPage = 

totalRecord%pageSize==0 ? totalRecord/pageSize : totalRecord/pageSize +1;

        //第二种方法    计算得到总的页数,在 总记录上+加一个pageSize然后减去1除页面的大小pageSize,取商

    

        int totalRecords = rsCount.getInt(1);

 

        totalPages = (totalRecords + PAGE_SIZE - 1)/PAGE_SIZE;

 

 

 

        //如果当前页码大于总的页数,停在最后一页

if(pageNo>totalPage)

{

pageNo = totalPage;

}

//计算每一次分页时 的起始位置,注意起始是从0开始;

int startPos = (pageNo-1)*pageSize;

Statement st = conn.createStatement();

        //进行分页查询,startPos是每一次分页的起始位置;   pageSize是这一页要显示记录的大小

ResultSet rs = st.executeQuery

("select * from article where pid =0 order by pdate desc limit "+startPos+","+pageSize);

%>   

 

分页后在页面的不同的显示方式:

 

方式一:在一个table中正常的显示:

 

while(rs.next()){

%>

}

                //关闭流

rs.close();

st.close();

conn.close();

%>

//只显示每一个记录的title

首页 共页  第页 末页

上一页  

下一页

 

方式二:可以选择的显示:可以实现页面的跳转

 

 

for(int i = 1;i

%>

}

%>

方式三:可以直接进行页面的查找:

 

//提交到当前页面

/>

 

 

 

方法二:Oracle数据库下的分页操作

 

 

分页查询

//连接数据库,加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

Connection ct = DriverManager.getConnection

("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","scott","tiger");

Statement sm = ct.createStatement();

//总共有多少页

int pageCount = 0;

//总共有多少行记录

int rowCount = 0;

//每页有3行记录

int pageSize = 3;

//接收pageNow

String s_pageNow = (String)request.getParameter("pageNow");

//当前在第一页

int pageNow = 1;

if(s_pageNow != null)

{

//把s_pageNow转化为数值型

pageNow = Integer.parseInt(s_pageNow);

}

//查询表中共有多少条记录

ResultSet rs = sm.executeQuery("select count(*) from emp");

if(rs.next())

{

rowCount = rs.getInt(1);

//如果整除就是商,否则就是商加上1  可以用三元表达式代替  rowCount%pageSize==0 ?  rowCount/pageSize : rowCount/pageSize +1

if(rowCount%pageSize == 0)

{

pageCount = rowCount/pageSize;

}

else

{

pageCount = rowCount/pageSize +1;

}

}

//执行分页查询

rs = sm.executeQuery

("select * from (select a1.*,rownum rn from(select * from emp) a1 where rownum="+((pageNow-1)*pageSize+1)+" ");

while(rs.next())

{

out.println("

");

out.println("

");

out.println("

");

out.println("

");

}

//输出每一页要查找的连接

for(int i=1; i

{

out.print("["+i+"]");

}

%>

姓名 薪水
"+rs.getString(2)+" "+rs.getString(6)+"

 

bitsCN.com
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn