台灣最大程式設計社群網站
線上人數
704
 
會員總數:245974
討論主題:189551
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 使用HTTP存取SQL Server
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
使用HTTP存取SQL Server
價值 : 0 QP  點閱數:1078 回應數:0
樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
微軟文件 ,節錄自http://www.microsoft.com/taiwan/technet/book/sq12k&xml/default.htm


使用HTTP存取SQL Server

本文摘錄自《SQL Server 2000與XML整合應用》第8-4節
出版社:文魁資訊股份有限公司
主題:使用HTTP存取SQL Server
作者:李勁 、沈兆陽
書號:P1037
定價:580元



您可以直接使用HTTP存取SQL Server 2000資料庫的資料,系統允許您透過HTTP執行下面的工作:
直接在URL中宣告SQL查詢,例如:'http://IISServer/tradedb ?sql=SELECT * FROM products FOR XML AUTO&root=root',FOR XML子句會使得輸出結果為一XML文件(而非一標準的結果集),root參數是在指定XML文件最上層元素的名稱。

直接在URL中宣告一範本,範本使您可以將資料組織成一XML文件,例如:
'http://IISServer/tradedb?template=<ROOT xmlns:sql ="urn:schemas-microsoft-com:xml-sql"><sql:query>SELECT * FROM products FOR XML AUTO</sql:query></ROOT>'。

在URL上撰寫SQL查詢是很麻煩的事,您可以將範本寫入一檔案,而在URL中宣告一範本檔,例如:'http://IISServer/tradedb/template/templatefile.xml',其中template為範本類型的虛擬名稱,使用範本檔可以增加系統的安全性。

撰寫XPath查詢套用於XDR綱要,例如:'http://IISServer/tradedb/schema/schemafile.xml/products[@prod_num="101"]',其中schema為綱要類型的虛擬名稱,而products[@prod_num="101"]則是套用在schemafile.xml上的XPath查詢。

直接在URL中宣告資料庫物件,例如:'http://IISServer/ tradedb/dbobject/XpathQuery',
其中dbobject為資料庫物件類型的虛擬名稱。
某一些字元在URL或是XML文件中是具有特殊意義的,所以必須以特別的編碼型式表達。在一個URL的查詢之中,特殊字元是以'%xx'(xx為十六進位數值)表示的。下表是在URL中的特殊字元以及相對應的表現方式。
特殊字元 代 表 意 義
16位元數值
+ 空白字元 %20
/ 分隔目錄與子目錄 %2F
? 分隔實際URL與參數 %3F
% 宣告特殊字元 %25
# 指示BOOKMARK %23
& 分隔URL中的參數 %26


表8-4.1

請您參考下面的範例:
SELECT * FROM Employees WHERE EmployeeID=?

因為'?'字元在URL中是一個特殊字元,所以在URL中應編碼為%3F,實際的URL應如下所示:
http://IISServer/nwind?sql=SELECT * FROM Employees WHERE EmployeeID=%3F FOR XML
AUTO&root=root&EmployeeID=1
在XML中'>'與'<'字元是具有特殊意義的,當您在XML的SQL查詢(或是XPath查詢)中使用這些特殊字
元時,必須加以編碼,例如:
SELECT TOP 2 * FROM orders WHERE order_num > 110 FOR XML AUTO
因為'>'在XML中具有特殊意義,所以應編碼為'>'(當該查詢被使用於一範本時),下面為範本的內容:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:query>
SELECT top 2 * FROM orders WHERE order_num > 110
FOR XML AUTO
</sql:query>
</ROOT>
如果您要將上面的範本置於一URL之中,因為'>'中的'&'字元在URL中是具有特殊意義的,所以它
必須被編碼為'%26',所以實際的URL應如下所示:
http://IISServer/tradedb?template=<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"><sql:query>SELECT TOP 2 * FROM orders WHERE order_num %26 110 FOR XML AUTO</sql:query></ROOT>


本篇文章發表於2002-03-12 00:00
目前尚無任何回覆
   

回覆
如要回應,請先登入.