亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

使用Microsoft SQL Server 2000的XML查詢

瀏覽:176日期:2023-10-31 10:08:30

由于XML本身的諸多優(yōu)點(diǎn),XML技術(shù)已被廣泛的使用,目前的好多軟件技術(shù)同XML緊密相關(guān),比如微軟的。net 平臺(tái)對(duì)xml提供了強(qiáng)大的支持,提供System.Xml以及其子命名空間下的類型來(lái)操作xml.Ado.net通過(guò)核心類型DataSet出色的把關(guān)系型數(shù)據(jù)庫(kù)同xml進(jìn)行了緊密集成。由于平常許多開(kāi)發(fā)人員使用。net 來(lái)操作Sql server的到數(shù)據(jù)集后再轉(zhuǎn)換成xml,所以往往忽略Transact-SQL查詢生成XML數(shù)據(jù)的強(qiáng)大功能。對(duì)于一些項(xiàng)目使用XML查詢直接通過(guò)SQL生成xml會(huì)來(lái)的更為簡(jiǎn)便,所以我通過(guò)在實(shí)際項(xiàng)目中的使用和查閱一些資料寫(xiě)成一個(gè)知識(shí)點(diǎn),一是溫故而知新,二是對(duì)于一些開(kāi)發(fā)者剛好需要這方面的技術(shù)而還沒(méi)有找到比較快捷的學(xué)習(xí)方式提供一條途徑。

在SQL SERVER 2000中查詢生成XML的語(yǔ)法表達(dá)式比較簡(jiǎn)潔,整個(gè)語(yǔ)法如下:

SELECT <;select_list>

FROM <;table_source>

WHERE <;search_condition>

FOR XML AUTO | RAW | EXPLICIT [,XMLDATA ] [,ELEMENTS] [,BINARY BASE64]

下面我將以Northwind數(shù)據(jù)庫(kù)來(lái)演示上面的表達(dá)式中所包含的各項(xiàng)功能,下面的查詢語(yǔ)句和返回結(jié)果都通過(guò)SQL SERVER 2000查詢分析器來(lái)執(zhí)行和得到。

一。 使用AUTO模式

該模式我認(rèn)為在生成單表xml數(shù)據(jù)方面是用得最多的,能滿足一般的需要。先來(lái)看他的簡(jiǎn)單查詢。

1.簡(jiǎn)單查詢

查詢語(yǔ)句:

SELECT CategoryID,

CategoryName

FROM Categories

WHERE CategoryID <3 FOR XML AUTO

返回結(jié)果:

<;Categories CategoryID='1' CategoryName='Beverages'/>

<;Categories CategoryID='2' CategoryName='Condiments'/>

也可以使用別名,

查詢語(yǔ)句:

SELECT CategoryID AS ID,

CategoryName,

GetDate() as CurrDate

FROM Categories MyTable

WHERE CategoryID <3 FOR XML AUTO

返回結(jié)果:

<;MyTable CategoryName='Beverages' CurrDate='2005-06-24T11:09:52.937'/>

<;MyTable CategoryName='Condiments' CurrDate='2005-06-24T11:09:52.937'/>

2.連接查詢

以兩個(gè)表為例,

查詢語(yǔ)句:

SELECT Categories.CategoryID,

Categories.CategoryName,

ProductID,

ProductName

FROM Categories

JOIN Products ON Categories.CategoryID = Products.CategoryID AND ProductID <;5

WHERE Categories.CategoryID <3 FOR XML AUTO

返回結(jié)果:

<;Categories CategoryID='1' CategoryName='Beverages'>

<;Products ProductID='1' ProductName='Chai'/>

<;/Categories>

<;Categories CategoryID='2' CategoryName='Condiments'>

<;Products ProductID='2' ProductName='Chang'/>

<;/Categories>

可以看到表連接查詢可以生成分層次的Xml,不過(guò)需要注意的是SELECT子句中的父表的列要排在子表的列的前面,否則會(huì)出現(xiàn)你不想看到的結(jié)果,如:

查詢語(yǔ)句:

SELECT ProductID,Categories.CategoryID,Categories.CategoryName,ProductName

FROM Categories

JOIN Products ON Categories.CategoryID = Products.CategoryIDand ProductID <;5

WHERE Categories.CategoryID <;3FOR XML AUTO

返回結(jié)果:

<;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='Condiments'/>

<;/Products>

<;Products ProductID='4' ProductName='Chef Anton&apos;s Cajun Seasoning'>

<;Categories CategoryID='2' CategoryName='Condiments'/>

<;/Products>

3.使用ELEMENTS選項(xiàng)

使用該選項(xiàng)可以生成以元素為中心的Xml表示,默認(rèn)為屬性方式,不過(guò)屬性方式節(jié)省空間。需要注意的是使用ELEMENTS選項(xiàng)是一種全是或全否的形式,不能得到一部分是以元素表示而另一部分以屬性表示的Xml數(shù)據(jù)。

查詢語(yǔ)句:

SELECT CategoryID,

CategoryName

FROM Categories

WHERE CategoryID <3

FOR XML AUTO, ELEMENTS

返回結(jié)果:

<;Categories>

<;CategoryID>1<;/CategoryID>

<;CategoryName>Beverages<;/CategoryName>

<;/Categories>

<;Categories>

<;CategoryID>2<;/CategoryID>

<;CategoryName>Condiments<;/CategoryName>

<;/Categories>

在連接查詢時(shí),

查詢語(yǔ)句:

SELECT Categories.CategoryID,

ProductID,

ProductName

FROM Categories

JOIN Products ON Categories.CategoryID = Products.CategoryIDand ProductID <;4

WHERE Categories.CategoryID <;3FOR XML AUTO, ELEMENTS

返回結(jié)果:

<;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.檢索對(duì)二進(jìn)制數(shù)據(jù)的XPath引用

這是對(duì)二進(jìn)制數(shù)據(jù)的操作,

查詢語(yǔ)句:

SELECT CategoryID,

Picture

FROM Categories

WHERE CategoryID = 1

FOR XML AUTO

返回結(jié)果:

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

使用ELEMENTS方式,

查詢語(yǔ)句:

SELECT CategoryID,

Picture

FROM Categories

WHERE CategoryID = 1

FOR XML AUTO,ELEMENTS

返回結(jié)果:

<;Categories>

<;CategoryID>1<;/CategoryID>

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

<;/Categories>

二。使用RAW模式

使用RAW模式不能使用ELEMENTS選項(xiàng)。

1.簡(jiǎn)單查詢

查詢語(yǔ)句:

SELECT CategoryID,

CategoryName AS Nanme

FROM Categories

WHERE CategoryID <3

ORDER BY CategoryID DESC

FOR XML RAW

返回結(jié)果:

<;row CategoryID='2' Nanme='Condiments'/>

<;row CategoryID='1' Nanme='Beverages'/>

2.連接查詢

查詢語(yǔ)句:

SELECT Categories.CategoryID,

Categories.CategoryName,

ProductID,

ProductName

FROM Categories

JOIN Products ON Categories.CategoryID = Products.CategoryIDand ProductID <;4

WHERE Categories.CategoryID <;= 2FOR XML RAW

返回結(jié)果:

<;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'/>

主站蜘蛛池模板: 91看片淫黄大片一级在线观看 | 国产成人亚洲精品影院 | 特黄特色大片免费播放 | 浮荡视频在线观看免费 | 国内精品露脸在线视频播放 | 92国产精品 | 在线亚洲国产精品区 | 久久99精品久久久久久h | 国产亚洲精品自在久久77 | 久久99精品久久只有精品 | 欧美日韩在线视频不卡一区二区三区 | 国产馆精品推荐在线观看 | 国产精品中文字幕在线 | 日韩欧免费一区二区三区 | 国产一区三区二区中文在线 | 国产亚洲欧美精品久久久 | 丰满美女福利视频在线播放 | 女教师的一级毛片 | 亚洲影视精品 | 99综合| xxxx色| 国内精自视频品线六区免费 | 久久久精品视频免费观看 | 国产精品第44页 | 久久黄色免费网站 | 欧美大片欧美毛片大片 | 免费视频精品一区二区 | 97精品国产自在现线免费 | 欧美日一区二区三区 | 一级片黄色一级片 | 国产精品美乳免费看 | 久久久高清国产999尤物 | 成人免费动作大片黄在线 | 亚洲精品成人一区 | 99精品欧美一区 | chinese国产videoxx实拍 | 亚洲欧美日韩网站 | 在线播放国产色视频在线 | 日韩亚洲人成在线 | 久碰香蕉精品视频在线观看 | 亚洲一区二区三区精品国产 |