视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Mysql和Oracle数据库中的分页查询_MySQL
2020-11-09 18:37:07 责编:小采
文档


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

下载本文
显示全文
专题