初学者别看篇:ADO.NET对象
创始人
2024-06-10 14:51:42
0

#T#学习了这么多关于编程的知识,在这里为大家简单的分析一下关于ADO.NET对象吧。几个ADO.NET对象都拥有一个叫做ExtendedProperties的集合。该属性就像收集货物(cargo collection)一样,可以用来存储任何类型的用户信息。DataSet、DataTable和DataColumn就是可以提供该数据成员的类。ADO.NET通过运用 PropertyCollection类封装的一个哈希表来实现这个ExtendedProperties属性。你可以用Add方法将数据插入到集合中。 Add方法使用了两个参数来保存数据——key和value.该方法的原形将参数定义为通用的对象类型,你可以存储任何类型的信息。然而,在特殊情况下,你应该特别注意那些被保存为扩展属性的对象的类型,下面我们来深入的研究一下吧。

如果你想将包含扩展属性的ADO.NET对象串行化到XML,***只用字符串。如果不行,你必须对ADO.NET的内在的serializer的行为采取对策。当ADO.NET将一个DataSet对象保存到XML时,ExtendedProperties集合的内容就被串行化到内存中了,但大概是出于性能的原因,ADO.NET运用了ToString方法,而不是XML serializer来实现串行化。更重要的是,当ADO.NET对象被读回并复原时,ExtendedProperties集合包含的是对象的字符串表现形式,而不是对象本身。

运用具有BLOB字段的ExecuteXmlReader

用于SQL Server的。NET数据提供者(data provider)使用了数据库提供的XML扩展名,并提供了一个额外的方法(ExecuteXmlReader)来执行查询。命令对象上的所有的执行者(例如ExecuteReader和ExecuteScaler)都采用不同的方法来得到结果集。ExcecuteReader通过一个托管指针(managed cursor)(data reader)来返回数据,而ExecuteScaler返回结果集中的***个值,把它作为一个标量值。ExecuteXmlReader执行查询,并返回已经绑定到一个XmlTextReader对象的基于XML的输出流。通过这种方式,你就不需要做额外的工作来以XML的方式加工数据了。要实现这一点,查询字符串必须返回XML数据。对SQL Server来说,当查询字符串包含一个FOR XML子句时,就可以实现它。尽管这只是一种可能。
 
一个不太为人所知的情况是,要使ExecuteXmlReader工作,让结果集包含XML数据就足够了。下面的查询方法很好,只要列包含XML格式的文本就行:SELECT data FROM table WHERE key=1这个列是个典型的BLOB或ntext字段,其文本显示为XML.简要地看看ExecuteXmlReader方法的内部结构会有助于我们的理解。该方法用ExecuteReader来执行查询,并从数据提供者得到一个数据流对象。接下来,它将数据流绑定到XmlTextReader类的一个新创建的实例上,这个实例被返回给调用者。连接一直处于忙碌状态,直到XML reader停止工作。SQL Server提供者是唯一的提供者,它提供了方法让我们从一个XML reader直接读取数据,但这种做法更多的是与提供者有关,而与数据库性能的关系并不大。Oracle支持XML查询,但Oracle的数据提供者并不支持XML查询。相比之下,为OLE DB数据提供者编写一个ExecuteXmlReader方法并不难(点此下载实例)。
 
不要设法缓存一个DataView

DataSet和DataTable对象是唯一的包含数据的ADO.NET对象。DataView是一个不能串行化的、轻量级的类,它只代表构建在一个表上的视图(view)。你可以根据一个表达式或行的状态来过滤视图。许多应用程序都需要你管理数据视图并将它们绑定到数据控件上,如Windows和Web DataGrid控件。一个DataView对象不能缓存数据;它只是缓存了与当前过滤器相匹配的基本的表中的行的索引。缓存索引的顺序与当前的排序表达式一致。缓存DataView而不缓存基本的DataTable是不行的。
 
例如,提供分页(比如通过运用DataGrid控件)的ASP.NET应用程序通常以一个DataView对象结尾,因为它支持排序和过滤。在有些情况下(大多是基于性能的原因),你可能决定要缓存数据源。要缓存的对象不能是DataView(它是你实际绑定的对象)。一个DataView只是一种索引,如果没有基本的DataTable对象,它是没有用的。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...