第二个灵魂 发表于 2015-1-16 23:09:29

ASP网站制作之一个关于ADO会见数据库完成分页

缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。ado|会见|分页|数据|数据库甚么是ADO存取数据库时的分页显现?假如你利用过今朝浩瀚网站上的电子通告板程序的话,那你应当会晓得电子通告板程序为了进步页面的读取速率,一样平常不会将一切的帖子全体在一页中排列出来,而是将其分红多页显现,每页显现必定数量的帖子数,比如20条。想不想懂得怎样完成分页显现?请看本文!

  《静态网站计划十八般技艺--ASP篇》一文从第一期至今已和伴侣们一同渡过了泰半个岁首,信任经由过程在这一段工夫中的进修、理论到再进修、再理论,人人已可以纯熟使用ASP的内建工具、ActiveX组件往编写一些基础的ASP使用程序。从我收到的伴侣们的来信中能够分明的感到到,人人的ASP功力正不休地提拔。比来良多伴侣来信但愿我写一些ASP在实际使用中的实例。因而,从本期入手下手我决意将《静态网站计划十八般技艺--ASP篇》的定位从先容和进修ASP基本常识转向到ASP实践运转的切磋和深化。应伴侣们的请求,在本期中我将给人人侧重谈一谈“ADO存取数据库时怎样分页显现”的成绩。
  甚么是ADO存取数据库时的分页显现?假如你利用过今朝浩瀚网站上的电子通告板程序的话,那你应当会晓得电子通告板程序为了进步页面的读取速率,一样平常不会将一切的帖子全体在一页中排列出来,而是将其分红多页显现,每页显现必定数量的帖子数,比如20条。这就是数据库查询的分页显现,假如你还不分明,往看看yahoo等搜刮引擎的查询了局就会分明了。

  那末事实怎样才干做到将数据库的查询了局分页显现呢?实在办法有良多,但次要有两种:

  1、将数据库中一切切合查询前提的纪录一次性的都读进recordset中,寄存在内存中,然后经由过程ADORecordset工具所供应的几个专门撑持分页处置的属性:PageSize(页巨细)、PageCount(页数量)和AbsolutePage(相对页)来办理分页处置。

  2、依据客户的唆使,每次分离从切合查询前提的纪录中将划定数量的纪录数读掏出来并显现。

  二者的次要不同在于前者是一次性将一切纪录都读进内存然后再依据唆使来顺次做判别剖析从而到达分页显现的效果,尔后者是先依据唆使做出判别并将划定数量的切合查询前提的纪录读进内存,从而间接到达分页显现的功效。

  我们能够很分明的感到到,当数据库中的纪录数到达上万或更多时,第一种办法的实行效力将分明低于第二种办法,由于当每个客户查询页面时都要将一切切合前提的纪录寄存在服务器内存中,然后在举行分页等处置,假如同时有凌驾100个的客户在线查询,那末ASP使用程序的实行效力将年夜受影响。可是,当服务器上数据库的纪录数和同时在线的人数并非良多时,二者在实行效力上是相差无几的,此时一样平常就接纳第一种办法,由于第一种办法的ASP程序编写绝对第二种办法要复杂了然很多。

  在这里作者就以我们罕见的ASPBBS程序为例,来给人人剖析一下怎样在BBS程序里完成分页显现功效,因为我们一样平常利用的BBS程序的数据库纪录数和同时会见的人数都不会太多,以是以下程序实例是利用的先前所先容的第一种分页显现办法。

  举行ADO存取数据库时的分页显现,实在就是对Recordset的纪录举行操纵。以是我们起首必需懂得Reordset工具的属性和办法:
  BOF属性:今朝目标指到RecordSet的第一笔。

  EOF属性:今朝目标指到RecordSet的最初一笔。

  Move办法:挪动目标到RecordSet中的某一笔记录。

  AbsolutePage属性:设定以后纪录的地位是位于哪一页AbsolutePosition属性:今朝目标在RecordSet中的地位。

  PageCount属性:显现Recordset工具包含几“页”的数据。

  PageSize属性:显现Recordset工具每页显现的纪录数。

  RecordCount属性:显现Recordset工具纪录的总数。

  上面让我们来具体熟悉一下这些主要的属性和办法

  1、BOF与EOF属性

  一般我们在ASP程序中编写代码来查验BOF与EOF属性,从而得知今朝目标所指向的RecordSet的地位,利用BOF与EOF属性,能够得知一个Recordset工具是不是包括有纪录大概得知挪动纪录行是不是已超越该Recordset工具的局限。

  如:<%ifnotrs.eofthen...%>

  <%ifnot(rs.bofandrs.eof)%>

  若以后纪录的地位是在一个Recordset工具第一行纪录之前时,BOF属性前往true,反之则前往false。

  若以后纪录的地位是在一个Recordset工具最初一行纪录以后时,EOF属性前往true,反之则前往false。

  BOF与EOF都为False:暗示目标位于RecordSet确当中。

  BOF为True:今朝目标指到RecordSet的第一条记录。EOF为True:今朝目标指到RecordSet的最初一条记录。

  BOF与EOF都为True:在RecordSet里没有任何纪录。

  2、Move办法

  您能够用Move办法挪动目标到RecordSet中的某一条记录,语法以下:

  rs.MoveNumRecords,Start

  这里的“rs”为一个工具变量,暗示一个想要挪动铛铛前纪录地位的Recordset工具;“NumRecords”是一个正正数运算式,设定以后纪录地位的挪动数量;“start”是一个可选的项目,用来指定纪录肇端的标签。

  一切的Recordset工具都撑持Move办法,假如NumRecords参数年夜于零,以后纪录地位向开端的偏向挪动;假如其小于零,则以后纪录地位向开首的偏向挪动;假如一个空的Recordset工具挪用Move办法,将会发生一个毛病。

  MoveFirst办法:将以后纪录地位移至第一条记录。

  MoveLast办法:将以后纪录地位移至最初一条记录。

  MoveNext办法:将以后纪录地位移至下一条记录。MovePrevious办法:将以后纪录地位移至上一条记录。

  Move办法:挪动目标到第n条记录,n由0算起。

  3、AbsolutePage属性

  AbsolutePage属性设定以后纪录的地位是位于哪一页的页数编号;利用PageSize属性将Recordset工具支解为逻辑上的页数,每页的纪录数为PageSize(除最初一页大概会有少于PageSize的纪录数)。这里必需注重并非一切的数据供应者都撑持此项属性,因而利用时要当心。

  与AbsolutePosition属性不异,AbsolutePage属性是以1为肇端的,若以后纪录为Recordset的第一行纪录,AbsolutePage为1。能够设定AbsolutePage属性,以挪动到一个指定页的第一行纪录地位。

  4、AbsolutePosition属性

  若您必要断定今朝目标在RecordSet中的地位,您能够用AbsolutePosition属性。

  AbsolutePosition属性的数值为今朝目标绝对於第一笔的地位,由1算起,即第一笔的AbsolutePosition为1。

  注重,在存取RecordSet时,没法包管RecordSet每次都以一样的按次呈现。

  若要启用AbsolutePosition,必需先设定为利用用户端cursor(指针),asp码以下:

  rs2.CursorLocation=3

  5、PageCount属性

  利用PageCount属性,决意Recordset工具包含几“页”的数据。这里的“页”是数据纪录的汇合,巨细即是PageSize属性的设定,即便最初一页的纪录数比PageSize的值少,最初一页也算是PageCount的一页。必需注重也并非一切的数据供应者都撑持此项属性。

  6、PageSize属性

  PageSize属性是决意ADO存取数据库时怎样分页显现的关头,利用它就能够决意几纪录构成一个逻辑上的“一页”。设定并创建一个页的巨细,从而同意利用AbsolutePage属性移到别的逻辑页的第一笔记录。PageSize属功能随时被设定。
  7、RecordCount属性

  这也是一个十分经常使用和主要的属性,我们经常使用RecordCount属性来找出一个Recordset工具包含几笔记录。如:<%totle=RS.RecordCount%>

  在懂得了Recordset工具的以上属性和办法后,我们来思索一下,怎样使用它们来到达我们分页显现的目标。起首,我们能够为PageSize属性设置一个值,从而指定从纪录组中掏出的组成一个页的行数;然后经由过程RecordCount属性来断定纪录的总数;再用纪录总数除以PageSize便可失掉所显现的页面总数;最初经由过程AbsolutePage属性就可以完成对指定页的会见。好象很其实不庞大呀,上面让我们来看看程序该怎样完成呢?

  我们创建如许一个复杂的BBS使用程序,它的数据库平分别有以下五个字段:“ID”,每一个帖子的主动编号;“subject”,每一个帖子的主题;“name”,加帖用户的姓名;“email”,用户的电子邮件地点;“postdate”,加帖的工夫。数据库的DSN为“bbs”。我们将显现帖子分页的一切步骤放在一个名为“ShowL</p>缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。

简单生活 发表于 2015-1-20 07:43:06

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

不帅 发表于 2015-1-24 16:59:59

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

只想知道 发表于 2015-1-24 23:21:45

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。

再见西城 发表于 2015-2-2 13:43:54

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

爱飞 发表于 2015-2-7 21:44:39

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

山那边是海 发表于 2015-2-23 11:39:30

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

透明 发表于 2015-3-7 08:31:40

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习

第二个灵魂 发表于 2015-3-14 15:34:52

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

变相怪杰 发表于 2015-3-21 11:28:46

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
页: [1]
查看完整版本: ASP网站制作之一个关于ADO会见数据库完成分页