仓酷云

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

[学习教程] ASP教程之ADO 2.5工具模子

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

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

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

x
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;ado|工具
固然在ADO2.5工具模子中呈现了两个新工具,但与之前的版本基础上是相似的。-3显现了这些工具和每一个工具之间的干系:

假如之前利用过ADO,你会发明在这个新版本中呈现了两个新工具:Stream和Record工具。在第11、12章将具体先容它们。
Properties汇合已被成心地扫除在-3外,如许你对几个次要工具之间的交互干系就一览无余了。在本章的前面,有显现Properties汇合的简化工具模子。
让我们更具体地考查这几个工具。

8.2.1Connection工具
Connection工具是使我们能与数据存储相连的工具。只要Connection工具才干指定但愿利用的OLEDB供应者、毗连到数据存储的平安细节和其他任何毗连到数据存储独有的细节。
使用注重的是,不用显式创立一个Connection工具以毗连到数据存储。只管的确必要指定毗连细节,但没有Connection工具,一样能够创立Command、Recordset和Record工具。假如不创立本人的Connection工具,ADO将会隐含地为你创立一个Connection工具。假如要对供应者运转多条命令,应当显式地创立一个Connection工具,这比每运转一条命令就创立一个毗连更无效。
除为数据存储供应毗连之外,Connection工具同意针对数据存储实行命令操纵。这些命令能够是布局化的或存储的命令(比方,SQL命令或一个存储历程),而且能够有选择地从数据存储中前往一些数据。

8.2.2Command工具
Command工具是对数据存储实行命令的工具。看到这里读者大概会发生疑问,Connection工具不也能如许做吗?是的,可是Connection工具在处置命令的功效上遭到必定的限定,而Command工具是出格为处置命令的各方面成绩而创立的。实践上,当从Connection工具中运转一条命令时,已隐含地创立一个Command工具。
偶然其他工具同意向命令传进参数,但在Connection工具中不克不及指定参数的任何细节。利用Command工具同意指定参数(和输入参数和命令实行后的前往值)的准确细节(好比,数据范例和长度)。
因而,除实行命令和失掉一系列前往纪录,也大概失掉一些由命令供应的附加信息。
关于那些不前往任何纪录的命令,如拔出新数据或更新数据的SQL查询,Command工具也是有效的。

8.2.3Recordset工具
Recordset工具是ADO中利用最为广泛的工具,由于它含有从数据存储中提取的数据集。我们常常运转不前往数据的命令,好比那些增添或更新数据的命令,但在年夜多半情形下很有大概会获得一系列纪录。
Recordset工具是具有这些纪录的工具。能够变动(增添、更新和删除)纪录会合的纪录,高低挪动纪录,过滤纪录并只显现部份内容等等。Recordset工具也包括Fields汇合,Fields汇合中有纪录会合每个字段(列)的Filed工具。
不管是在ASP页面中处置数据,仍是使用远程数据服务(RDS)远程利用数据,Recordset工具是必需处置的工具。

8.2.4Record工具
ADO2.5之前的版本在处置布局化数据上是很无效的,好比从数据库中掏出纪录集,但没法处置每行的列(也就是列数和数据范例)大概分歧的数据。关于SQL数据这不是一个成绩,但关于文件和邮件体系,Web服务器和其余诸云云类的数据存储会怎样呢?我们把这些数据看做是半布局化的数据,与纪录集比拟布局性较差,但与那些经常使用来代表文本或图象的二进制数据比拟更具有布局性。
一般,半布局化数据的存储接纳树状布局来构造,有节点、子节点和文件。比方,假想一个有文件夹、子文件夹和文件的Web站点。-4所示的屏幕图显现了一台呆板的Web站点,出格是另有一个名为public的假造目次:

假如必定要在ADO中举行建模,会以为这十分合适纪录集,多是嵌套的纪录集。但是注重高亮度显现的目次,该目次含有分歧范例的文件,内里有几个目次、两个ASP文件、一个文本文件和一个WORD文档。你会很简单地将其映照到一个具有称号、范例、前次存取工夫等字段的纪录集,遗憾的是并非如许复杂。关于会见权限而言,在文件和目次之间就有区分。关于目次,必要的是能会见目次下的文件;而关于文件,却多是必要会见其内容。
因为其庞大性,引进了Record工具。在下面的情形下,存在有一些不异属性的条目标一个汇合,可是每一个条目也有共同的属性,因而必要利用其余办法去向理这些数据。把一个汇合映照到一个纪录集,一个独自的文件映照成一笔记录,响应的文件属性就映照成Fields汇合。
这意味着有了一个含有六行纪录的纪录集。会见纪录会合独自的一行就会失掉该文件的属性(字段),可是供应给我们的仅仅是属性,为了会见文件或目次的内容,必要利用Record工具,该工具包括文件或目次的共同属性。习气于这个观点有必定的坚苦,但不用忧虑,在第11、12章你会看到更多有关Record工具的例子。Windows2000初始版本公布以来,只要用于Internet公布的OLEDB供应者利用Record工具。一旦微软Exchange6.0公布,将成为以相似办法使用纪录集和纪录供应对Exchange信息库会见的OLEDB供应者。
8.2.5Stream工具
Stream工具用于会见节点的内容,好比一个E-Mail动静,或一个Web页面。使用Stream工具能够会见文件或资本的实在内容。因而,分离Record和Recordset工具,不但能够会见Web服务器上的文件或email动静,还能够会见响应的内容。如许,就能够创立一个只利用ADO往会见邮件体系的邮件客户。这大概不会有太多的长处,但意味着可不用懂得邮件体系的API或工具模子,削减了进修上的弯路。
Stream的另外一个用处是XML,能够会见一系列作为XML流的数据(布局化或半布局化)。
Stream工具用来处置二进制数据,以是,能够用来处置BLOB范例的数据,好比数据库中的图象或年夜文本数据。
一样,在本书第11、12章中你会看到更多的有关Stream工具的例子。

8.2.6汇合
ADO工具库中有一些汇合,每一个汇合都有零个或更多个与其联系关系的工具的拷贝。可使用不异的代码布局往遍历这些汇合。
在VBScript中的语法是:
ForEachobjectInCollection
Dosomethingwithobject
Next
比方,遍历一个Recordset工具的Fields集:
ForEachobjFieldInrs.Fields
Response.WriteobjField.Name&"<BR>"
Next
假如选择JScript,那末可使用Enumerator工具:
for(objField=newEnumerator(rs.Fields);
!objField.atEnd();objField.moveNext())
Response.Write(objField.item().Name+<BR>);
1.Fields汇合
Fields汇合具有与纪录集或纪录联系关系的Field工具。对基于布局化数据的纪录集,好比SQL数据,字段响应于数据中的列,并含有列的具体内容,好比称号、数据范例、长度等等。在今后几章看到大批的关于Fields汇合的例子。
关于半布局化的数据,工具的属性响应于字段。在第12章会看到更多的相干的先容。
2.Parameters汇合
Parameters汇合仅被Command工具利用,断定在存储命令中的参数。SQL数据库中的存储历程频仍地利用参数,并同意数据传进和传出预界说的SQL语句。假如具有向ADO前往信息的参数,则会非常有效,由于如许从存储过程当中前往的就不但是一个纪录集。比方,思索一个更新多个表然后前往一个纪录集的庞大存储历程,能够用一个输入参数显现更新了几笔记录。
另外一个利用参数的来由是功能成绩,出格是在仅仅必要从存储历程前往单个值的时分。在这类情形下,没有创立纪录集的需要,只必要保留一个值便可,因此不必要前往纪录集,而前往输入参数的值是更加无效的办法。
在第9章会看到有关Parameter汇合的具体先容。
3.Error汇合
Error汇合包括因运转命令而引发的上一次ADO或OLEDB供应者毛病的具体内容,只能被Connection工具会见。大概会以为这是个限定,由于不用显式界说Connection工具,但能够经由过程Command、Recordset和Record工具的ActiveConnection属性会见隐含的Connection工具。比方:
ForEachobjErrorInrs.ActiveConnection.Errors
Response.WriteobjError.Name&"<BR>"
Next
在本章前面,将具体会商Error汇合。
4.Properties汇合
为了不凌乱,Properties汇合没有在后面的工具模子图上加以显现。它与工具模子的干系显现在-5中:

Properties汇合存在的缘故原由是由于ADO是用来处置很多分歧的数据存储,都有分歧的特性。将属性(Property)构成一个汇合,可使之可以静态地依据分歧的数据供应者而随时改动。比方,Jet的OLEDB供应者同意会见Jet特别的平安属性:
SetconDB=Server.CreateObject("ADODB.Connection")
conDB.Open"DSN=Nwind"

conDB.Properties("JetOLEDB:DatabasePassword")="LetMeIn"
其他的供应者没有这个属性,因而把它加到Connection工具中作为一个静态属性是不明智的。ADO依据所利用的OLEDB供应者,会用供应者缺省值添补属性汇合。
固然这里有关于Properties汇合的利用申明,但在本书中禁绝备具体叙说Properties汇合。要取得更多的关于该汇合的先容,请参阅《ProfessionalADO2.5Programming》或《ADO2.5ProgrammingsReference》,二者都由Wrox出书。

8.2.7ADO常数
当利用ADO时,会发明有很多事后界说的用于浩瀚选项的常数,好比界说光标范例和锁范例的常数。利用像VisualBasic或VisualC++如许的言语,一旦援用了ADO范例库,天然会用到这些常数。在ASP中情形分歧,有两种选择。
援用常数的第一种办法是把它们包括进ASP文件:
<!--#INCLUDEFILE="adovbc.inc"-->
能够将包括文件拷进当地目次,大概从安装目次援用它,其缺省路径为C:ProgramFilesCommonFilesSystemado(以上文件包括用于VBScript的ADO常数――关于JScript,应当利用adojavas.Inc)。利用这个办法的一点不敷是会使ASP页面变得过年夜,由于包括了全体的常数,而个中很多是不必要利用的。
能够创立本人的只含有所必要的常数的包括文件,但愈来愈多利用ADO的功效时,极可能会发明必要不休地编纂、保护这个文件。
一个对照好的办理的办法是创立一个对范例库的援用,这类办法不必要将常数包括进ASP文件而间接能够援用常数:
<!--METADATATYPE="typelib"FILE="C:ProgramFiles
CommonFilesSystemadomsado15.dll"-->
不要嫌疑这个DLL的名字是msado15.dll,这是一个准确的名字,包括最新版本的ADO。
能够在必要的中央把这个METADATA语句包括进每个ASP文件,大概放进global.asa文件,如许使用程序中的每一个Web页面都能够援用这些常数。


只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天
深爱那片海 该用户已被删除
沙发
发表于 2015-1-20 06:09:44 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
透明 该用户已被删除
板凳
发表于 2015-1-28 20:31:17 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
活着的死人 该用户已被删除
地板
发表于 2015-2-5 22:48:49 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
兰色精灵 该用户已被删除
5#
发表于 2015-2-14 01:16:02 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
谁可相欹 该用户已被删除
6#
发表于 2015-3-4 03:42:09 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-11 16:05:36 | 只看该作者
那么,ASP.Net有哪些改进呢?
莫相离 该用户已被删除
8#
发表于 2015-3-19 01:47:35 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
海妖 该用户已被删除
9#
发表于 2015-3-27 03:09:33 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 10:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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