ADO.NET运用具有BLOB字段的ExecuteXmlReader

开发 后端
这里就ADO.NET运用ExecuteXmlReader,ExcecuteReader通过一个托管指针(managed cursor)(data reader)来返回数据,而ExecuteScaler返回结果集中的第一个值,把它作为一个标量值。

掌握了一门技术的理论知识你未必可以很好的运用它,因为在实际和理论还有一个过渡,这里我们就来看看怎样更好的对ADO.NET运用提高效果。用于SQL Server的.NET数据提供者(data provider)使用了数据库提供的XML扩展名,并提供了一个额外的方法(ExecuteXmlReader)来执行查询。命令对象上的所有的执行者(例如ExecuteReader 和ExecuteScaler)都采用不同的方法来得到结果集。

#T#ExcecuteReader通过一个托管指针(managed cursor)(data reader)来返回数据,而ExecuteScaler返回结果集中的第一个值,把它作为一个标量值。ExecuteXmlReader执行查询,并返回已经绑定到一个XmlTextReader对象的基于XML的输出流。通过这种方式,你就不需要做额外的工作来以XML的方式加工数据了。要实现这一点,查询字符串必须返回XML数据。对SQL Server来说,当查询字符串包含一个FOR XML子句时,就可以实现它。尽管这只是一种可能。

一个不太为人所知的情况是,要使ExecuteXmlReader工作,让结果集包含XML数据就足够了。下面的查询方法很好,只要列包含XML格式的文本就行ADO.NET运用见图1:SELECT data FROM table WHERE key=1

ADO.NET运用查询XML数据

图1. ADO.NET运用查询XML数据

这个列是个典型的BLOB或ntext字段,其文本显示为XML。简要地看看ExecuteXmlReader方法的内部结构会有助于我们的理解。该方法用ExecuteReader来执行查询,并从数据提供者得到一个数据流对象。接下来,它将数据流绑定到XmlTextReader类的一个新创建的实例上,这个实例被返回给调用者。连接一直处于忙碌状态,直到XML reader停止工作。SQL Server提供者是唯一的提供者,它提供了方法让我们从一个XML reader直接读取数据,但这种做法更多的是与提供者有关,而与数据库性能的关系并不大。Oracle支持XML查询,但Oracle的数据提供者并不支持XML查询。相比之下,为OLE DB数据提供者编写一个ExecuteXmlReader方法并不难(点此下载实例)。

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

2009-11-03 17:35:43

ADO.NET对象

2009-12-23 11:25:30

ADO.NET处理

2009-11-13 14:29:13

ADO.NET Mer

2009-11-03 14:46:47

ADO.NET数据库

2009-11-11 10:39:19

ADO.NET Fin

2011-05-20 11:31:07

ADO.NET

2009-12-28 15:11:36

ADO.NET专家

2009-11-13 11:18:22

ADO.NET修改数据

2009-11-03 16:37:10

2011-06-02 09:39:29

ADO.NET

2009-09-14 13:37:25

LINQ ADO.NE

2010-01-04 10:48:30

ADO.NET特色

2009-07-06 10:43:51

ADO.NET

2009-11-12 14:37:26

ADO.NET结构

2009-11-12 13:26:56

使用ADO.NET参数

2009-11-03 17:25:59

ADO.NET编程技巧

2009-10-29 13:34:01

ADO.NET对象

2009-11-12 10:32:47

ADO.NET技术

2009-09-09 10:23:59

ADO.NET连接

2009-12-18 14:37:56

ADO.NET模型
点赞
收藏

51CTO技术栈公众号