当前位置: 中国教程学习网 > 教程学院 > 网站设计与开发 > ASP >

ASP讲座之八:ASP与数据库(三)

作者:     来源:     时间:2005-11-18

...
  • 关键字:
  • 在上两讲中,我们讲解了ASP中数据库的基本使用,今天将介绍几种非常实用的技术。

    一、 分页技术
    前面我们介绍了如何检索数据并输出到浏览器端,对少量数据而言,那样简单的输出处理是完全可以的,但是若数据量很大,有几百条甚至上千条,一次将如此多的数据全部输出到客户端是不现实的,一来页面从上到下拉得很长,二来客户端等待的时间过长,三来服务器的负载过大。所以采取分页输出非常必要。
        要求:输出Northwind.mdb“产品”表中的数据至浏览器,每页显示10条。
        例wuf60.asp,这段代码还是有点难度的,要多看多体会,AdoAccess.asp在上讲中提到过。
        注:该例程吸收了某些书籍中好的部分,特此声明。
    <%@ LANGUAGE="VBSCRIPT" %>
    <!--#include file="AdoAccess.asp"-->
    <!--#include file="adovbs.inc"-->
    <%
    Dim RecordPerPage, absPageNum, TotalPages, absRecordNum, rsTest, StrSQL
    'absPageNum   - 当前页为第几页
    'TotalPages   - 总的页数
    'absRecordNum - 当前页中某一条记录的序号, 如 1-10

    RecordPerPage = 10                        '每页显示的记录数

    ' 取得所输出数据的 当前页码
    If Request.ServerVariables("CONTENT_LENGTH") = 0 Then
    '若没收到表单递交的数据(如首次加载该页时), 则从第 1 页开始显示
    absPageNum = 1          
    Else
        '取出按 按钮 时的页码
        absPageNum = CInt(Request.Form("PressPageNum"))
        '如按 则页码 -1, 按 , 则页码 +1
        If Request.Form("Submit") = "" Then
    absPageNum = absPageNum - 1
        ElseIf Request.Form("Submit") = "" Then
            absPageNum = absPageNum + 1
        End If
    End If

    ' 创建记录集对象
    Set rsTest = Server.CreateObject("ADODB.Recordset")

    rsTest.CursorLocation = adUseClient   '这样设置可减轻数据库负载
    rsTest.CursorType = adOpenStatic      '游标需要前后移动,不能设为仅向前
    rsTest.CacheSize = RecordPerPage      '设置这个选项会提高性能

    StrSQL = "SELECT * FROM 产品 Order By 产品ID"
    rsTest.Open StrSQL, Cnn, , , adCmdText

    rsTest.PageSize = RecordPerPage     '设置每一页的记录数

    If Not(rsTest.EOF) Then
    rsTest.AbsolutePage = absPageNum
    End If

    TotalPages = rsTest.PageCount
    %>

    <% ' 下面部分 输出当前页的数据至浏览器 %>
    <Html><Boby>
    <table colspan=8 cellpadding=5 border=0>
    <tr>
    <td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">单价</font></td>
    <td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">产品名称</font></td>
    </tr>
    <% ' 用循环输出当前页的 10 条数据
    For absRecordNum = 1 to rsTest.PageSize
    %>
      <tr>
        <td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2"><%= rsTest("单价")%></font></td>
        <td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2"><%= rsTest("产品名称")%></font></td>
      </tr>
    <%
        rsTest.MoveNext
        If rsTest.EOF Then
    Exit For        ' 如果已到记录尾, 退出 - 如最后一页数据不满页时
    End If
    Next

    rsTest.Close : Cnn.Close
    Set rsTest = Nothing : Set Cnn = Nothing
    %>
    </table>

    <% ' 下面部分 是两个按钮 "" "" %>
    <Form Action = "<%= Req
    关于我们 | 客服中心 | 商务合作 | 网站地图 | 友情连接 | 联系我们 | RSS订阅
    Copyright © 2002-2009 765P.com All Rights Reserved
    765P教程网 版权所有 鄂ICP备07500079号