欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-06-17 12:49:25
...
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