掌握了一门技术的理论知识你未必可以很好的运用它,因为在实际和理论还有一个过渡,这里我们就来看看怎样更好的对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
图1. ADO.NET运用查询XML数据
这个列是个典型的BLOB或ntext字段,其文本显示为XML。简要地看看ExecuteXmlReader方法的内部结构会有助于我们的理解。该方法用ExecuteReader来执行查询,并从数据提供者得到一个数据流对象。接下来,它将数据流绑定到XmlTextReader类的一个新创建的实例上,这个实例被返回给调用者。连接一直处于忙碌状态,直到XML reader停止工作。SQL Server提供者是唯一的提供者,它提供了方法让我们从一个XML reader直接读取数据,但这种做法更多的是与提供者有关,而与数据库性能的关系并不大。Oracle支持XML查询,但Oracle的数据提供者并不支持XML查询。相比之下,为OLE DB数据提供者编写一个ExecuteXmlReader方法并不难(点此下载实例)。
文章名称:ADO.NET运用具有BLOB字段的ExecuteXmlReader
网站路径:http://www.shufengxianlan.com/qtweb/news4/363004.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联