邮件订阅
5ucms模版,简单应用:使用MSSQL的XML进行查询
作者: 来源: 日期:2018/3/11 13:08:20 浏览量:27(滞后) 人气:LOADING...(实时) 【

5ucms模版,简单应用:使用MSSQL的XML进行查询

由于XML本身的诸多优点,XML技术已被广泛的使用,目前的好多软件技术同XML紧密相关,比如微软的。net 平台对xml提供了强大的支持,提供System.Xml以及其子命名空间下的类型来操作xml.Ado通过核心类型DataSet出色的把关系型数据库同xml进行了紧密集成。由于平常许多开发人员使用。net 来操作Sql server的到数据集后再转换成xml,所以往往忽略Transact-SQL查询生成XML数据的强大功能。对于一些项目使用XML查询直接通过SQL生成xml会来的更为简便,所以我通过在实际项目中的使用和查阅一些资料,以SQL 2000为例,写成一个知识点,一是温故而知新,二是对于一些开发者刚好需要这方面的技术而还没有找到比较快捷的学习方式提供一条途径。

在SQL SERVER 2000中查询生成XML的语法表达式比较简洁,整个语法如下:

 

SELECT <;select_list>            FROM <;table_source>            WHERE <;search_c>下面我将以Northwind数据库来演示上面的表达式中所包含的各项功能,下面的查询语句和返回结果都通过SQL SERVER 2000查询分析器来执行和得到。 

一、 使用AUTO模式

该模式我认为在生成单表xml数据方面是用得最多的,能满足一般的需要。先来看他的简单查询。

1.简单查询

查询语句:

 

SELECT CategoryID,            CategoryName            FROM Categories            WHERE CategoryID <; 3 FOR XML AUTO

返回结果:

 

<;Categories CategoryID="1" CategoryName="Beverages"/>            <;Categories CategoryID="2" CategoryName="C>也可以使用别名, 

查询语句:

 

SELECT CategoryID AS ID,            CategoryName,            GetDate() as CurrDate            FROM Categories MyTable            WHERE CategoryID <; 3 FOR XML AUTO

返回结果:

 

<;MyTable ID="1" CategoryName="Beverages" CurrDate="2005-06-24T11:09:52.937"/>            <;MyTable ID="2" CategoryName="C>2.连接查询 

以两个表为例,

查询语句:

 

SELECT Categories.CategoryID,            Categories.CategoryName,            ProductID,            ProductName            FROM Categories            JOIN Products >返回结果: 

 

<;Categories CategoryID="1" CategoryName="Beverages">            <;Products ProductID="1" ProductName="Chai"/>            <;/Categories>            <;Categories CategoryID="2" CategoryName="C>可以看到表连接查询可以生成分层次的Xml,不过需要注意的是SELECT子句中的父表的列要排在子表的列的前面,否则会出现你不想看到的结果,如: 

查询语句:

 

SELECT ProductID,Categories.CategoryID,Categories.CategoryName,ProductName            FROM Categories            JOIN Products >返回结果: 

 

<;Products ProductID="1" ProductName="Chai">            <;Categories CategoryID="1" CategoryName="Beverages"/>            <;/Products>            <;Products ProductID="2" ProductName="Chang">            <;Categories CategoryID="1" CategoryName="Beverages"/>            <;/Products>            <;Products ProductID="3" ProductName="Aniseed Syrup">            <;Categories CategoryID="2" CategoryName="C>2.使用ELEMENTS选项 

使用该选项可以生成以元素为中心的Xml表示,默认为属性方式,不过属性方式节省空间。需要注意的是使用ELEMENTS选项是一种全是或全否的形式,不能得到一部分是以元素表示而另一部分以属性表示的Xml数据。

查询语句:

 

SELECT CategoryID,            CategoryName            FROM Categories            WHERE CategoryID <; 3            FOR XML AUTO, ELEMENTS

返回结果:

 

<;Categories>            <;CategoryID>1<;/CategoryID>            <;CategoryName>Beverages<;/CategoryName>            <;/Categories>            <;Categories>            <;CategoryID>2<;/CategoryID>            <;CategoryName>C>在连接查询时, 

查询语句:

 

SELECT Categories.CategoryID, ProductID, ProductName FROM Categories JOIN Products >返回结果:

 

<;Categories>            <;CategoryID>1<;/CategoryID>            <;Products>            <;ProductID>1<;/ProductID>            <;ProductName>Chai<;/ProductName>            <;/Products>            <;Products>            <;ProductID>2<;/ProductID>            <;ProductName>Chang<;/ProductName>            <;/Products>            <;/Categories>            <;Categories>            <;CategoryID>2<;/CategoryID>            <;Products>            <;ProductID>3<;/ProductID>            <;ProductName>Aniseed Syrup<;/ProductName>            <;/Products>            <;/Categories>
4.检索对二进制数据的XPath引用

这是对二进制数据的操作,

查询语句:

 

SELECT CategoryID,            Picture            FROM Categories            WHERE CategoryID = 1            FOR XML AUTO

返回结果:

 

<;Categories CategoryID="1" Picture="dbobject/Categories[@CategoryID=''1'']/@Picture"/>

使用ELEMENTS方式,

查询语句:

 

SELECT CategoryID,            Picture            FROM Categories            WHERE CategoryID = 1            FOR XML AUTO,ELEMENTS

返回结果:

 

<;Categories>            <;CategoryID>1<;/CategoryID>            <;Picture>dbobject/Categories[@CategoryID=''1'']/@Picture<;/Picture>            <;/Categories>            <ccid_page/>

二、使用RAW模式

使用RAW模式不能使用ELEMENTS选项。

1.简单查询

查询语句:

 

SELECT CategoryID,            CategoryName AS Nanme            FROM Categories            WHERE CategoryID <; 3            ORDER BY CategoryID DESC            FOR XML RAW

返回结果:

 

<;row CategoryID="2" Nanme="C>2.连接查询 

查询语句:

 

SELECT Categories.CategoryID,            Categories.CategoryName,            ProductID,            ProductName            FROM Categories            JOIN Products >返回结果: 

 

<;row CategoryID="1" CategoryName="Beverages" ProductID="1" ProductName="Chai"/>            <;row CategoryID="1" CategoryName="Beverages" ProductID="2" ProductName="Chang"/>            <;row CategoryID="2" CategoryName="Condiments" ProductID="3" ProductName="Aniseed Syrup"/>

选择5ucms.org 选择未来

本站推荐: 5ucms模板下载 5ucms插件下载 仿站联系Q3876307       [复制给好友] [打印] [关闭] [返回] [顶部]
上一篇:5ucms仿站,简介Mysql中的临时表使用方法
下一篇:5ucms帮助基于MySQL的数据库集群系统的实现 (2)
本站声明:本网站所载文章等内容,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权及其它问题,请在30日内与本网联系(Email:3876307#qq.com),我们将在第一时间删除内容。若原创内容转载请注明出处。
5ucms模版,简单应用:使用MSSQL的XML进行查询的关键词:
评论信息
相关分类
本周热门
本月热门
关于我们 - 版权/免责 申明 - 建站服务 - 网站地图 - 稿件投递 - 联系我们 - 5ucms
Copyright © 2008-2015 www.5ucms.org