jsp分页
<%@ page contentType="text/htmlcharset=8859_1" %>
<%
//变量声明
java.sql.Connection sqlCon//数据库连接对象
java.sql.Statement sqlStmt//SQL语句对象
java.sql.ResultSet sqlRst//结果集对象
java.lang.String strCon//数据库连接字符串
java.lang.String strSQL//SQL语句
int intPageSize//一页显示的记录数
int intRowCount//记录总数
int intPageCount//总页数
int intPage//待显示页码
java.lang.String strPage
int i
//设置一页显示的记录数
intPageSize = 2
//取得待显示页码
strPage = request.getParameter("page")
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage)
if(intPage<1) intPage = 1
}
//装载JDBC驱动程序
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver())
//设置数据库连接字符串
strCon = "jdbc:oracle:thin:@linux:1521:ora4cweb"
//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"hzq","hzq")
//创建一个可以滚动的只读的SQL语句对象
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY)
//准备SQL语句
strSQL = "select name,age from test"
//执行SQL语句并获取结果集
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/htmlcharset=gb2312">
<title>JSP数据库 *** 作例程 - 数据分页显示 - JDBC 2.0 - Oracle</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<%
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1) * intPageSize + 1)
//显示数据
i = 0
while(i<intPageSize &&!sqlRst.isAfterLast()){
%>
<tr>
<td><%=sqlRst.getString(1)%></td>
<td><%=sqlRst.getString(2)%></td>
</tr>
<%
sqlRst.next()
i++
}
}
%>
</table>
第<%=intPage%&gt页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%><a href="jdbc20-oracle.jsp?page=<%=intPage+1%>">下一页</a>&lt%}%><%if(intPage>1){%><a href="jdbc20-oracle.jsp?page=<%=intPage-1%>">上一页</a>&lt%}%>
</body>
</html>
<%
//关闭结果集
sqlRst.close()
//关闭SQL语句对象
sqlStmt.close()
//关闭数据库
sqlCon.close()
%>
实现原理很简单,就是建立一个Page类,里面放当前访问的页数和每一页显示的记录行数。然后通过分页计算就可以得出下列数据。总页数 = 总记录数/每页大小,如果0!=总记录数%每页大小,那么总页数再+1。
当前页数。
表记录的起始位置=(当前页数-1)*每页大小。
总记录数(select count(*) from [表名] [where [条件]]。从数据库中查询得到)
每页大小,可以固定,也可以从页面传过来有了这几个参数之后,就用sql语句查出对应的记录就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)