仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 674|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网站制作之最好的数据库分页办法

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。分页|数据|数据库一:一个陈词滥调的成绩。
    我们晓得,纪录集分页是数据库处置中非常罕见的成绩。而当我们计划到收集数据库,就是说要思索传输带宽成绩时,分页成绩就屡屡困扰着每个数据库程序计划职员。

二:分页成绩的办理计划汇总
    提及办理的计划,每一个数据库计划职员大概城市举出很多办法。但细分后,能够回为三类。一:Ado记录集分页、二:专储纪录集分页、3、数据库游标分页。
 一:出名的ADO记录集分页。
     说到出名,由于这个多是最复杂和罕见的分页办法了。(大概也是用的最多的)就是使用ADO自带的分页功效来完成分页。
     详细流程为,数据库依据查询语句前往一个完全的记录集。然后到客户端后有客户真个游标举行分页。他们年夜多半由ADO自带的Recordset工具就能够完成了。大概触及到的属性有:
recordset.pagesize:每页输入记录集的巨细
recordset.AbsolutePage: 以后输入的页    (有以上的两个属性实在就能够完成份页输入了)
recordset.pagecount: 今朝的总页数。
     这类办法好欠好呢,有的人说是非常好,也有人说效力不高。实在这的依据实践的使用情况来断定,假如是单机数据库,大概是局域网情况,大概数据库记录较少,则他都是很好的分页办法,并且假如不触及到收集和更新较少的情况里,则他能够说是最好的分页办法。由于它能够师长教师成一个缓存纪录集,今后的几页记录都能够欠亨过数据库来取便可。可是,假如触及到收集,大概是更新频仍。他就不是很有用的了。

枚举程序。(我们都用收集成绩来思索)
 
nowpage=Request("nowpage") 以后的输入页
if nowpage="" or nowpage<1 then nowpage=1

set rs=server.CreateObject("adodb.recordset")
rs.CursorType=1
sql="select * from table1 "
rs.open sql,strconn (strconn为毗连字段,已界说过)

rs.PageSize=20  以后页的巨细
if cint(nowpage)>rs.pagecount then nowpage=rs.pagecount
rs.AbsolutePage=nowpage

然后输入以后一页的记录
.............


还能够供应一下程序属性设置。
首页:nowpage=1
前页:nowpage=nowpage-1
下页:nowpage=nowpage+1
尾页:nowpage=rs.pagecount
总记录数:rs.recordcount
总页数:rs.pagecount

二:转储记录集分页。
这类办法出生于收集时期,就是使用服务器真个壮大处置历程,先将方针数据库存到一个一时的数据库里,而且加上一个自增字段来举行分别页面,最初将所需流动数量的记录集传回。

长处是:只需交互一次,并且前往流动一页的记录集。
弱点是:假如记录集增年夜时则每次都需创建一个一时记录集,也对照耗工夫,但削减了收集传输量。
例子:


取自 Worx 英文版的<<Professional Active Server Pages 3.0>>
ISBN1861002610
关头中央我已作了中文翻译

CREATE PROCEDURE usp_PagedAuthors
@iPageint,
@iPageSizeint
AS
BEGIN
-- disable row counts
SET NOCOUNT ON

-- declare variables
DECLARE @iStartint-- start record
DECLARE @iEndint-- end record
DECLARE @iPageCountint-- total number of pages

-- create the temporary table
       --创建一时表。

CREATE TABLE #PagedAuthors       (
--这个自增字段非常关头,就是靠他来完成份页标示。
IDintIDENTITY,      
au_idvarchar(11)NOT NULL ,
au_lnamevarchar(40)NOT NULL ,
au_fnamevarchar(20)NOT NULL ,
phonechar(12)NOT NULL ,
addressvarchar(40)NULL ,
cityvarchar(20)NULL ,
statechar(2)NULL ,
zipchar(5)NULL ,
contractbitNOT NULL 
)

-- populate the temporary table       
--先转存到下面的这个记录集。
INSERT INTO #PagedAuthors (au_id, au_lname, au_fname, 
phone, address, city, state, zip, contract)
SELECTau_id, au_lname, au_fname, 
phone, address, city, state, zip, contract
FROMauthors


-- work out how many pages there are in total
SELECT@iPageCount = COUNT(*)
FROM authors

SELECT@iPageCount = CEILING(@iPageCount / @iPageSize) + 1

-- check the page number
IF @iPage < 1
SELECT @iPage = 1

IF @iPage > @iPageCount
SELECT @iPage = @iPageCount

-- calculate the start and end records
SELECT @iStart = (@iPage - 1) * @iPageSize
SELECT @iEnd = @iStart + @iPageSize + 1

-- select only those records that fall within our page
--这条sql语句就是拔取流动的记录集。

SELECTau_id, au_lname, au_fname, 
phone, address, city, state, zip, contract
FROM#PagedAuthors
WHEREID > @iStart
ANDID < @iEnd


DROP TABLE #PagedAuthors

-- turn back on record counts
SET NOCOUNT OFF

-- Return the number of records left
RETURN @iPageCount
END


而输入端能够用最快范例的ADO"前方光标"依次输入便可
<%
  Dim cmdAuthors
  Dim rsData
  Dim iPage
  Dim iLastPage
  Dim sQuote

  sQuote = Chr(34)

  get the requested data
  If Request.QueryString("PAGE") = "" Then
    iPage = 1
  Else
    iPage = CInt(Request.QueryString("PAGE"))

    If iPage < 1 Then
      iPage = 1
    End If
  End If

   create the objects
  Set cmdAuthors = Server.CreateObject("ADODB.Command")
  Set rsAuthors = Server.CreateObject("ADODB.Recordset")

  With cmdAuthors
    .ActiveConnection = strConn
    .CommandText = "usp_PagedAuthors"
    .CommandType = adCmdStoredProc

    .Parameters.Append .CreateParameter("RETURN_VALUE", adInteger, _
                              adParamReturnValue)
    .Par</p>由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。
莫相离 该用户已被删除
沙发
发表于 2015-1-19 22:58:47 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
若相依 该用户已被删除
板凳
发表于 2015-1-28 14:16:55 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-5 15:20:22 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
深爱那片海 该用户已被删除
5#
发表于 2015-2-12 13:13:57 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
若天明 该用户已被删除
6#
发表于 2015-3-3 03:23:15 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
蒙在股里 该用户已被删除
7#
 楼主| 发表于 2015-3-11 09:07:40 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
乐观 该用户已被删除
8#
发表于 2015-3-18 02:08:59 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
山那边是海 该用户已被删除
9#
发表于 2015-3-25 09:19:12 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表