仓酷云

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

[学习教程] ASP教程之用DataReader仍是DataSet?

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:37:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
帮助用户快速实现各种应用服务,ASP商有整合各方面资源的能力,可在短期内为用户提供所需的解决方案。例如,典型的ERP安装,如果要在客户端安装的话需要半年到二年的时间,但是美国的一些ASP商如USI和CORIO能在90—120天内提供ERP应用方案。   我常常听到有人问这个成绩:“在ASP.NET Web使用法式中我应当用DataReader类仍是DataSet类呢?”在良多文章和旧事组的贴子中我常常看到如许的曲解,即以为DataReader(SqlDataReader或OleDbDataReader的缩写)比DataSet好。有时分我也会看到相反的说法。现实上,Microsoft创立了这两个数据存取类是由于它们都是咱们所需求的。每一个类都有其长处和缺乏,你可以依据使用情况来选择用哪个。

本文就二者的选择成绩做了很清晰的讲述,可让你在应用ASP.NET时,在选择DataReader类或DataSet类的方面失掉一些指南。在基于客户真个Windows Form使用法式情况下,这些划定规矩能够会改动。我在做这些讲述时,假定你已用过DataReader和DataSet类了,并对它们很熟习。

应用DataReader类
上面就是应用DataReader类的幻想前提: 你读取的数据必需是新的,所以在每次需求数据的时分,你都必需从数据库读取。创立一个DataReader类不会损耗良多内存,不外跟着负荷的增添,DataSet上的功能也会很快地进步(参考资本中Visual Studio Magazine中的文章)。

你对每行数据的需求很复杂。该情形的最好的例子就是复杂地将DataReader绑定到一个Web控件,如DataGrid或DropDownList。

你只需求从数据库中以只向前的(forward-only) 、只读的模式来存取XML数据。在这类情形下,你可以用SQLCommand对象的ExcecuteXmlReader()办法来失掉一个XmlReader类(相当于XML版的DataReader)。这就需求一个应用FOR XML子句的SQL Server查询,或一个包括无效XML的ntext字段。

你企图对数据库停止几个反复的挪用,来读取一小块信息。在这类情形下,咱们后面提到过的功能数据会有更大的进步。

切实其实,使DataSet类更壮大的很多功效只合用于基于客户真个Windows Form使用法式,好比在多个表之间创立关系的功效。在良多情形下,DataSet类都比DataReader类更有优势,并且在有些情形下,你基本就不克不及用DataReader类。



应用DataSet类
鄙人面的情形,你应当思索应用DataSet类: 你构建了一个Web service,它应用的数据是你作为前往值读取的数据。由于DataReader类必需坚持到数据库的毗连,所以它们不克不及被序列化到XML中,也不克不及被发送给一个Web service的挪用者。

你需求排序或挑选数据。在应用一个DataView对象(出现为DataTable类的DefaultView属性,它包括一个DataSet类)来排序或挑选数据前,咱们先试着用SQL查询(如WHERE和ORDER BY语句)来完成这些功效,并应用更轻量级、更快的DataReader类。但是,有时侯用这类办法是不可的,或当你需求屡次地对数据停止排序或挑选时就不克不及用DataReader。

针对统一恳求,你需求屡次遍历数据。你只能在DataReader中轮回一次。假如你想将多个ServerControl类绑定到统一个数据集,那末选择DataSet就更好。DataReader类不克不及被绑定到多个ServerControl类,由于它是只向前读取的。在这类情形下,假如要利用DataReader,必需从数据库读取两次数据。

你需求存储数据,尔后续的页面恳求能够会用到的这些数据。假如数据只被恳求它的专门的人利用,你可以将DataSet类保留在一个Session变量中。假如数据可以被任何人会见,那末你可以将它保留在一个Application变量中,或保留在Cache中(我建议利用后一种办法,由于它撑持工夫刻日和回调(callback))。由于DataReader类必需一向翻开对数据库的毗连,并且它一次只能保留一行数据,所以它们不克不及在跨页面恳求中被保留。

你需求对一个了局集的每一个元素完成特别的、耗时的功效。例如,假如你从一个数据库读取一列邮政编码,并想经由过程挪用一个Web service来失掉每一个区域的具体的天色情况信息,那末选择DataSet就会更好。这是由于,当你在用DataReader类时,在封闭DataReader类前,与数据库的毗连不会被释放回毗连池。在数千页面恳求之间潜伏的一个很小的延时城市形成Web使用法式的很高的会见量,从而就会损耗完可用的毗连。相反,DataSet可以在前端读取一切的数据,并可以即刻封闭与数据库的毗连,将它前往到毗连池,因而其它的页面恳求就能够用这个毗连了。

你需求在一个两维典范中加载并处置XML数据。DataSet类关于XML很有效,由于你可以将DataView用于XML,对基本的数据停止排序和挑选,就同处置一个数据库了局集一样。但是,需求注重的是在System.Xml名字空间中有良多类,你可以将它们用于更庞杂的XML操作。

你的数据源不是一个数据库。固然OleDbDataReader可以用于任何OLEDB数据供应者(能够指向一个数据库,也能够不指向一个数据库),但DataSet对象可以从一个XML文件直接加载数据,并静态地注释它的schema。DataSet类也能够将XML数据写回一个数据流或一个文件。



从下面的讲述咱们就能够看到,DataSet类比DataReader类有更多的功效,这就能够让你在更多的情形下应用它们。但这其实不意味着你老是在用DataSet类。你需求在ASP.NET中完成的相当大一局部的义务都属于DataReader的范围。

虽然如斯,毫无疑问,从主要水平或庞杂水平的角度来讲,DataSet类在良多ASP.NET Web使用法式中都起着很主要的感化。你可以经由过程明智的缓存来最小化数据库往复,从而下降DataSet类的“功能伤害”。DataReader和DataSet都是一个胜利的ASP.NET Web使用法式的主要的部件。主要的是,咱们需求懂得什么时候、在哪里可以最好的利用它们。


</p>  因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。
再现理想 该用户已被删除
沙发
发表于 2015-2-4 03:58:57 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
第二个灵魂 该用户已被删除
板凳
发表于 2015-2-6 20:46:58 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-18 16:59:44 | 只看该作者
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
小魔女 该用户已被删除
5#
发表于 2015-3-6 08:51:00 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
爱飞 该用户已被删除
6#
发表于 2015-3-8 11:24:44 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
乐观 该用户已被删除
7#
发表于 2015-3-15 22:12:52 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
不帅 该用户已被删除
8#
发表于 2015-3-22 06:09:22 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
谁可相欹 该用户已被删除
9#
发表于 2015-3-22 20:48:29 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
分手快乐 该用户已被删除
10#
发表于 2015-3-27 07:33:17 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
兰色精灵 该用户已被删除
11#
发表于 2015-4-6 05:05:56 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
admin 该用户已被删除
12#
发表于 2015-4-18 01:54:16 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
只想知道 该用户已被删除
13#
发表于 2015-4-23 05:49:17 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
变相怪杰 该用户已被删除
14#
发表于 2015-5-2 08:02:41 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
蒙在股里 该用户已被删除
15#
发表于 2015-5-6 23:11:40 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
16#
发表于 2015-5-9 17:14:16 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
深爱那片海 该用户已被删除
17#
发表于 2015-5-10 02:47:57 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
飘灵儿 该用户已被删除
18#
发表于 2015-6-18 11:32:44 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
飘飘悠悠 该用户已被删除
19#
发表于 2015-6-22 09:07:34 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
因胸联盟 该用户已被删除
20#
发表于 2015-6-29 07:45:20 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-30 00:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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