数据分页显示学习笔记

来源:互联网 发布:阿里云免备案空间 编辑:程序博客网 时间:2024/05/23 15:45

功能:

读取数据库的表记录,并将记录分页显示

通过ResultSet的absolute()方法选择要显示的内容的第一条记录

数据结构:

int intPage; //待显示的页码

int intPageCount; //要显示的页总数

int intRowCount; //记录总数

int intPageSize; //每页的记录数

 

实现代码如下:

<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gbk"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
 Connection sqlCon;
 Statement sqlStmt;
 ResultSet sqlRst;
 String strCon;
 String strSQL;
 int intPageSize;//一页显示的记录数
 int intRowCount;//记录总数
 int intPageCount;//总页数
 int intPage;//待显示页数
 String strPage;
 int i;
 intPageSize=2;
 strPage = request.getParameter("page");
 if(strPage==null){
  intPage=1;
 }
 else{
  intPage=Integer.parseInt(strPage);
  if(intPage<1)intPage=1;
 }
 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
 strCon="jdbc:oracle:thin:@localhost:1521:orcl";
 sqlCon=DriverManager.getConnection(strCon,"dbsnmp","dbsnmp");
 sqlStmt=sqlCon.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
 strSQL="select * from mytest2";
 sqlRst=sqlStmt.executeQuery(strSQL);
 sqlRst.last();
 intRowCount=sqlRst.getRow();
 intPageCount=(intRowCount+intPageSize-1)/intPageSize;
 if(intPage>intPageCount)intPage=intPageCount;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>JSP数据库</title>
</head>
<body>
<%
request.setCharacterEncoding("ISO-8859-1");
if(intPageCount>0){
 sqlRst.absolute((intPage-1)*intPageSize+1);
 i=0;
 while(i<intPageSize&&!sqlRst.isAfterLast()){
  %>
  <br>
  <%=sqlRst.getString(1) %><br><%=sqlRst.getString(2) %>
  
  <%
  sqlRst.next();
  i++;
 }
}
  %>
  <br>第<%=intPage %>页&nbsp;&nbsp;共<%=intPageCount %>页&nbsp;&nbsp;
  <%if(intPage<intPageCount){ %>
  <a href="jspOracleB.jsp?page=<%=intPage+1 %>">下一页</a>
  <%} %>&nbsp;&nbsp;
  <%if(intPage>1){ %>
  <a href="jspOracleB.jsp?page=<%=intPage-1 %>">上一页</a>
  <%} %>

</body>
<%
sqlRst.close();
sqlStmt.close();
sqlCon.close();
%>
</html>

 

 

学习收获:

ResultSe:

absolute(int row)
将光标移动到此 ResultSet 对象的给定行编号

isAfterLast()
获取光标是否位于此 ResultSet 对象的最后一行之后。

last()
将光标移动到此 ResultSet 对象的最后一行。

CONCUR_UPDATABLE
该常量指示可以更新的 ResultSet 对象的并发模式。

TYPE_SCROLL_SENSITIVE
该常量指示可滚动并且通常受 ResultSet 底层数据更改影响的 ResultSet 对象的类型。

 

原创粉丝点击