Mysql和Oracle数据库中的分页查询
来源:互联网 发布:mac口红russian red 编辑:程序博客网 时间:2024/04/25 21:18
方法一: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中正常的显示:
<table border="1">
<%
while(rs.next()){
%>
<tr>
<td>
<%= rs.getString("title") %>//只显示每一个记录的title
</td>
</tr>
<%
}
//关闭流
rs.close();
st.close();
conn.close();
%>
</table>
首页<%=1 %> 共<%=totalPage %>页 第<%=pageNo %>页 末页<%=totalPage %>
<a href="ShowArticleFlat.jsp?pageNo=<%=pageNo-1 %>"> 上一页 </a>
<a href="ShowArticleFlat.jsp?pageNo=<%=pageNo+1 %>"> 下一页 </a>
方式二:可以选择的显示:可以实现页面的跳转
<form name="form1">
<select name="pageNo" onchange="document.form1.submit()">
<%
for(int i = 1;i<=totalPage;i++){
%>
<option value=<%=i %> <%= pageNo==i?"selected":""%>>第<%=i %>页
<%
}
%>
</select>
</form>
方式三:可以直接进行页面的查找:
//提交到当前页面
<form name="fom2" action="ShowArticleFlat.jsp">
<input type=text size=4 name="pageNo" value=<%=pageNo%> />
<input type="submit" value="go" />
</form>
方法二:Oracle数据库下的分页操作
<body>
<h2>分页查询</h2>
<table>
<tr>
<td>姓名</td>
<td>薪水</td>
</tr>
<%
//连接数据库,加载驱动
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("<tr>");
out.println("<td>"+rs.getString(2)+"</td>");
out.println("<td>"+rs.getString(6)+"</td>");
out.println("</tr>");
}
//输出每一页要查找的连接
for(int i=1; i<=pageCount; i++)
{
out.print("<a href=fenye.jsp?pageNow="+i+">["+i+"]<a>");
}
%>
</table>
</body>
- Mysql和Oracle数据库中的分页查询
- mysql、oracle分页查询数据库
- Oracle、MySql、SQLServer 数据库中分页查询中的关键字总结
- [笔记]Oracle、MySQL和DB2数据库分页查询的实现
- mysql 和oracle分页查询
- 数据库分页,Oracle 和 mysql
- oracle与mysql 数据库sql 分页查询
- Oracle\MySQL数据库分页查询实例
- Oracle、Mysql数据库分页查询归纳
- SQLServer、MySQL、Oracle 中的分页查询
- Oracle,SQLServer,MySQL数据库中的分页
- 分页查询 Oracle 和 mySql的不同:
- Oracle、MYSQL、sqlserver和DB2分页查询
- Oracle和MySQL分页查询SQL语句
- Oracle和Mysql的分页查询语句
- Oracle数据库分页查询
- oracle数据库分页查询
- oracle数据库分页查询
- DirectX Sample-ShadowVolumn阴影技术
- 达不到预期
- gethostname()函数的用法
- Java乔晓松-httpURLConnection、URL、httpClient、httpPost、httpGet之代码详解篇
- WSAStartup()函数用法
- Mysql和Oracle数据库中的分页查询
- 面试题之线程的缓存系统
- VC++ 不重启Windows直接更改IP地址
- Android反编译APK文件
- ios20-录制音频(播放,停止,开始录制)
- OutputDebugString, NKDbgPrintfW
- miniLZO压缩库使用注意事项
- 心境修炼之一
- 心境修炼之二