明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

比較XML數(shù)據(jù)存取APIs(續(xù))

[摘要]SQLXML 3.0的安裝將Microsoft.Data.SqlXml集合裝到你的機(jī)子上。給項(xiàng)目添加對(duì)該集合的一個(gè)引用,并用以下代碼引入名字空間:using Microsoft.Data.SqlXm...
SQLXML 3.0的安裝將Microsoft.Data.SqlXml集合裝到你的機(jī)子上。給項(xiàng)目添加對(duì)該集合的一個(gè)引用,并用以下代碼引入名字空間:using Microsoft.Data.SqlXml;




以下代碼連接到數(shù)據(jù)庫(kù),并用SQLXML類(lèi)來(lái)執(zhí)行SELECT語(yǔ)句: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;
}




該代碼所做的第一件事就是通過(guò)將連接字符串傳遞到構(gòu)造器來(lái)創(chuàng)建必要的SqlXmlCommand對(duì)象。由FOR XML創(chuàng)建的XML通常是一個(gè)XML片段,并不是格式規(guī)范的文件。為了使XML格式規(guī)范,你必須用RootTag屬性在Command對(duì)象上設(shè)置一個(gè)根標(biāo)簽,在本例中設(shè)置成“employees”。

SQLXML功能包的以前的版本在將XML返回給客戶(hù)端前在數(shù)據(jù)庫(kù)服務(wù)器上構(gòu)造XML。這會(huì)造成可擴(kuò)展性方面的問(wèn)題,因?yàn)閯?chuàng)建的XML沒(méi)有分布給客戶(hù)端,所以產(chǎn)生的XML流比默認(rèn)情況下SQL Server返回的本地二進(jìn)位數(shù)據(jù)流要大很多。3.0版本允許SQLXML將數(shù)據(jù)流作為二進(jìn)位數(shù)據(jù)返回給客戶(hù)端,然后在客戶(hù)端上將數(shù)據(jù)轉(zhuǎn)換成XML。

將數(shù)據(jù)轉(zhuǎn)換成XML
將ClientSideXml屬性設(shè)置成True來(lái)實(shí)現(xiàn)這一步。你仍然用帶有FOR XML子句的SELECT語(yǔ)句,但是當(dāng)你將ClientSideXml設(shè)置為T(mén)rue時(shí),在將語(yǔ)句傳送到SQL Server前,托管類(lèi)將FOR XML子句從SQL語(yǔ)句中去掉了。數(shù)據(jù)庫(kù)不再看到FOR XML子句,可以更有效地將數(shù)據(jù)流返回給客戶(hù)端。然后,SQL托管類(lèi)在客戶(hù)端將數(shù)據(jù)流轉(zhuǎn)換成XML。

通過(guò)調(diào)用ExecuteXmlReader方法來(lái)執(zhí)行SELECT語(yǔ)句,該方法返回一個(gè)XmlReader對(duì)象。然后,你將XmlReader對(duì)象載入一個(gè)XmlDocument,并將產(chǎn)生的OuterXml返回給調(diào)用者。

最后一個(gè)數(shù)據(jù)存取API是運(yùn)用ADO 2.6和Visual Basic 6.0。通過(guò)打開(kāi)一個(gè)新的VB6 ActiveX DLL項(xiàng)目來(lái)創(chuàng)建這個(gè)項(xiàng)目。重新命名Class1為ADO26,命名項(xiàng)目為DBXMLVS6。然后,給項(xiàng)目添加ActiveX Data Objects 2.6引用。一旦完成這一步,就給你的類(lèi)添加ExecuteSelect方法(見(jiàn)列表3)。

同所有其它例子一樣,你先要?jiǎng)?chuàng)建并打開(kāi)你的數(shù)據(jù)庫(kù)連接。然后,創(chuàng)建新的Command對(duì)象,并給Connection對(duì)象設(shè)置其ActiveConnection屬性。SELECT語(yǔ)句同ADO.NET例子中用的SELECT語(yǔ)句一樣。