比較XML數據存取APIs(續)
發表時間:2023-07-31 來源:明輝站整理相關軟件相關文章人氣:
[摘要]SQLXML 3.0的安裝將Microsoft.Data.SqlXml集合裝到你的機子上。給項目添加對該集合的一個引用,并用以下代碼引入名字空間:using Microsoft.Data.SqlXm...
SQLXML 3.0的安裝將Microsoft.Data.SqlXml集合裝到你的機子上。給項目添加對該集合的一個引用,并用以下代碼引入名字空間:using Microsoft.Data.SqlXml;
以下代碼連接到數據庫,并用SQLXML類來執行SELECT語句:public string ExecuteSqlXmlSelect(
string CustomerID,
string ConnectionString,
bool ClientSide)
{
SqlXmlCommand cmd = new
SqlXmlCommand(ConnectionString);
cmd.RootTag = "Employees";
cmd.ClientSideXml = ClientSide;
cmd.CommandText = "SELECT * FROM
Customers WHERE CustomerID = '" +
CustomerID + "' FOR XML RAW";
XmlReader xr =
cmd.ExecuteXmlReader();
XmlDocument xd = new XmlDocument();
xd.Load(xr);
return xd.OuterXml;
}
該代碼所做的第一件事就是通過將連接字符串傳遞到構造器來創建必要的SqlXmlCommand對象。由FOR XML創建的XML通常是一個XML片段,并不是格式規范的文件。為了使XML格式規范,你必須用RootTag屬性在Command對象上設置一個根標簽,在本例中設置成“employees”。
SQLXML功能包的以前的版本在將XML返回給客戶端前在數據庫服務器上構造XML。這會造成可擴展性方面的問題,因為創建的XML沒有分布給客戶端,所以產生的XML流比默認情況下SQL Server返回的本地二進位數據流要大很多。3.0版本允許SQLXML將數據流作為二進位數據返回給客戶端,然后在客戶端上將數據轉換成XML。
將數據轉換成XML
將ClientSideXml屬性設置成True來實現這一步。你仍然用帶有FOR XML子句的SELECT語句,但是當你將ClientSideXml設置為True時,在將語句傳送到SQL Server前,托管類將FOR XML子句從SQL語句中去掉了。數據庫不再看到FOR XML子句,可以更有效地將數據流返回給客戶端。然后,SQL托管類在客戶端將數據流轉換成XML。
通過調用ExecuteXmlReader方法來執行SELECT語句,該方法返回一個XmlReader對象。然后,你將XmlReader對象載入一個XmlDocument,并將產生的OuterXml返回給調用者。
最后一個數據存取API是運用ADO 2.6和Visual Basic 6.0。通過打開一個新的VB6 ActiveX DLL項目來創建這個項目。重新命名Class1為ADO26,命名項目為DBXMLVS6。然后,給項目添加ActiveX Data Objects 2.6引用。一旦完成這一步,就給你的類添加ExecuteSelect方法(見列表3)。
同所有其它例子一樣,你先要創建并打開你的數據庫連接。然后,創建新的Command對象,并給Connection對象設置其ActiveConnection屬性。SELECT語句同ADO.NET例子中用的SELECT語句一樣。