关于分页程序

关于分页程序,第1张

虽然适合在每个不同文件名里调用这个函数,但是也是有前提的,下面让我们来仔细看看其中的原委。

下面这段是基本的分页代码:

<% sql = "select……………………省略了sql语句

Set rs=Server.Createobject("ADODB.RECORDSET")

rs.Open sql, conn, 1, 1

if not rs.eof then

pages = 30 ’定义每页显示的记录数

rs.pageSize = pages ’定义每页显示的记录数

allPages = rs.pageCount’计算一共能分多少页

page = Request.QueryString("page")’通过浏览器传递的页数

’if语句属于基本的排错处理

if isEmpty(page) or Cint(page) < 1 then

page = 1

elseif Cint(page) > allPages then

page = allPages

end if

rs.AbsolutePage = page

Do while not rs.eof and pages > 0 %>

这里输出你要的内容………………

<% pages = pages - 1

rs.MoveNext

Loop

else

Response.Write("数据库暂无内容!")

End if

rs.Close

Set rs = Nothing %>

系统已经为数据分页了,下面就看看这次探讨的关键问题分页函数的定义

<% SUB pageUrl(pUrl)

Dim eUrl

txts = Request.ServerVariables("URL")

txts = left(txts,instrrev(txts,"/",len(txts))-1)

eUrl = "http://"&Request.ServerVariables("server_name") &txts

For i =1 to allpages

txt = ""

txt = "<strong>"

txt = txt &"<a href=" &eUrl &pUrl &"page="&i &">"

if i = Cint(Page) then txt = txt &"<font color=’bb0000’>"

txt = txt &(i)

if i = Cint(Page) then txt = txt &"</font>"

txt = txt &"</a> ‖ </strong>"

Response.Write(txt)

Next

END sub %>

把上面这个分页函数代码COPY存成一个ASP文件,在需要使用的页面里用include来引入他调用的时候只要 Call("/你调用的文件名?")就ok了,比如我的 news页面里要调用那么就是<%Call("/news.asp?")%>

刚才我们所到这是有限制的意思就是说第一段代码里除了sql查询内容和输出内容可以更改,其他的声明记录集的对象,page, pages, allpages这些变量都不能更改,否则将无法运行~其实这个程序是无关紧要的,最主要的就是,这个分页函数可以在任何一个asp页面里调用。

转一个

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()

%>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7746557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存