小议sql查询返回xml数据之应用

    今天查看邮件,看到一标题Using the FOR XML Clause to Return Query Results as XML,点进去看了看,以前也是知道sql server 查询可以返回xml格式,但具体一到应用中比较少,读过文章后,想到自己的项目有调用远程web服务,传xml格式串方法,这个xml串是拼接而成的。想到此,决定做个测试,看程序中如何接收sql查询返回xml格式,为以后做个笔记,方便自己查找。
  

测试步骤:

1.       创建测试数据,同上一篇(在sql server中,实现列数据转换成逗号隔开字符串 ),还是以用户表为例,创建语句和添加数据语句如下:

Code

 

2.       sql server management studio 中温习下 sql 查询加for xml后的结果集,主要是参考Using the FOR XML Clause to Return Query Results as XML文内容,在sql 语句结束处加for xml auto root(‘xxx’) elements等等。

 

运行一sql 语句:SELECT * FROM Users u FOR XML raw

执行结果如下:

Code

 

Sql语句:SELECT * FROM Users u FOR XML RAW('User')

 

执行结果如下:

Code

 语句SELECT * FROM Users u FOR XML RAW('User'),ROOT('Users'),elements 不在copy执行结果了,大家自己执行下就可以看到效果了。

3.       ASP.NET中如何获取这种形式的数据集呢。主要用到xmlreader(xmlTextReader),这里以xmlreader为例,

 

在程序代码中,主要用是用SqlCommand对象ExecuteXmlReader()方法,

下面是具体的实现代码:

Code

运行结果:


Code


得到sql 返回的xml格式的数据,以前我的那个项目拼接成的xml格式的字符串就可以省去一大部分拼接代码。没有测试过是在程序这边拼接效率好还是数据库返回xml数据效率好,但编写的程序代码是减少很多。有兴趣的同学帮忙测测这两种方式哪种效率更好些呢。欢迎大家扔砖头。

参考:

Using the FOR XML Clause to Return Query Results as XML

http://www.simple-talk.com/content/article.aspx?article=720

 

如何使用SQLSERVER2000中的XML功能

http://www.legalsoft.com.cn/docs/docs/11/1001.html

 

 

使用ExecuteXMLReader()读取XML片段

http://blog.csdn.net/sunhaiwei_andy/archive/2008/04/14/2289586.aspx

原文地址:https://www.cnblogs.com/kevinlzf/p/1567788.html