文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SQL返回XML格式的数据

SQL返回XML格式的数据

时间:2007-04-11  来源:weiwei6659

SQL Server 2000 提供了几种从SQL Server返回XML格式数据的方法。
怎么样,有心动的感觉么? Let's Go !

我们还是用系统自带的Northwind数据库做演示。

下面这句我们可以返回所有Products表中单价大于50的ProductName字段的值,这是我们经常用的写法。
SELECT ProductName
FROM Products
WHERE (UnitPrice > 50)

为了能返回XML格式的数据,我们把这句稍微改动一下。
SELECT ProductName
FROM Products
WHERE (UnitPrice > 50)
FOR XML RAW

查询结果可能如下:

<row ProductName="Mishi Kobe Niku"/><row ProductName="Carnarvon Tigers"/><row ProductName="Sir Rodney&apos;s Marmalade"/><row ProductName="Thüringer Rostbratwurst"/><row ProductName="C&ocirc;te de Blaye"/><row ProductName="Manjimup Dried Apples"/><row ProductNam
...

呵呵,是不是很方便,通过一个简单的FOR XML RAW就能返回XML格式的数据,这里的Raw是一个参数,告诉系统返回未加工的元素,XML属性名即为数据库字段名,XML属性值即为数据库对应字段值。

当然除了RAW还有别的参数的,比如 AUTO或者 EXPLICIT
SELECT ProductName
FROM Products
WHERE (UnitPrice > 50)
FOR XML AUTO

查询结果可能如下:
<Products ProductName="Mishi Kobe Niku"/><Products ProductName="Carnarvon Tigers"/><Products ProductName="Sir Rodney&apos;s Marmalade"/><Products ProductName="Thüringer Rostbratwurst"/><Products ProductName="C&ocirc;te de Blaye"/><Products ProductName="Manjimup
...

发现跟RAW有什么不同了么?数据库的表名也作为属性返回来了。

SELECT ContactName, OrderID
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.OrderID
WHERE Customers.Country = 'Germany'
FOR XML AUTO

查询结果可能如下:
<customers ContactName="Maria Anders">
<orders OrderID="10643" />
<orders OrderID="10692" />
...
</customers>
<customers ContactName="Hanna Moos">
<orders OrderID="10501" />
<orders OrderID="10509" />
...
</customers>
<customers ContactName="Sven Ottlieb">
<orders OrderID="10363" />
...

正如你看到的,返回的XML文档包含了子元素。

还剩下一个参数 EXPLICIT ,这个参数在RAW和AUTO都不好用的时候可以考虑一下,可以用它返回比较复杂的XML文档。
相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载