当前位置:Gxlcms > mysql > Mysql和Oracle数据库中的分页查询_MySQL

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

时间:2021-07-01 10:21:17 帮助过:20人阅读

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<=0)

{

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();

%>

<%= rs.getString("title") %>//只显示每一个记录的title

首页<%=1 %> 共<%=totalPage %>页 第<%=pageNo %>页 末页<%=totalPage %>

"> 上一页

"> 下一页

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

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

//提交到当前页面

方法二: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*pageSize+")where rn>="+((pageNow-1)*pageSize+1)+" ");

while(rs.next())

{

out.println("

");

out.println("

");

out.println("

");

out.println("

");

}

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

for(int i=1; i<=pageCount; i++)

{

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

}

%>

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

bitsCN.com

人气教程排行