初学者别看篇:ADO.NET对象

开发 后端
知道DataSet和DataTable对象是唯一的包含数据的ADO.NET对象吗?本文将详细的讲解,还有关于运用具有BLOB字段的ExecuteXmlReader。

#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对象,它是没有用的。

责任编辑:田树 来源: CSDN
相关推荐

2009-10-29 09:19:59

ADO.NET

2009-12-24 17:26:00

ADO创建表

2009-11-04 12:45:33

ADO.NET Dat

2009-10-29 13:34:01

ADO.NET对象

2009-09-28 10:34:43

NET初学者学习建议

2009-06-30 15:22:00

Java还是.NET

2009-11-13 14:38:45

ADO.NET Dat

2009-12-21 17:35:24

ADO.NET对象

2009-06-18 09:56:44

ADO.NET对象模型

2009-11-03 15:24:14

ADO.NET对象模型

2009-12-21 17:02:19

ADO.NET Sql

2009-11-04 10:23:05

ADO.NET Con

2009-11-03 09:48:47

VB.NET构造

2009-11-12 16:04:42

ADO.NET对象查询

2009-12-28 13:47:31

ADO.NET对象

2009-12-18 14:27:24

ADO.NET对象

2009-11-04 11:30:35

ADO.NET Dat

2009-12-30 14:59:42

ADO.NET数据集

2009-12-21 15:52:30

ADO.NET对象

2009-11-11 10:55:10

ADO.NET对象
点赞
收藏

51CTO技术栈公众号