SQLXML 3.0的安裝將Microsoft.Data.SqlXml集合裝到你的機(jī)子上。給項(xiàng)目添加對(duì)該集合的一個(gè)引用,并用以下代碼引入名字空間:using Microsoft.Data.SqlXml;
以下代碼連接到數(shù)據(jù)庫(kù),并用SQLXML類來執(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; }
該代碼所做的第一件事就是通過將連接字符串傳遞到構(gòu)造器來創(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返回給客戶端前在數(shù)據(jù)庫(kù)服務(wù)器上構(gòu)造XML。這會(huì)造成可擴(kuò)展性方面的問題,因?yàn)閯?chuàng)建的XML沒有分布給客戶端,所以產(chǎn)生的XML流比默認(rèn)情況下SQL Server返回的本地二進(jìn)位數(shù)據(jù)流要大很多。3.0版本允許SQLXML將數(shù)據(jù)流作為二進(jìn)位數(shù)據(jù)返回給客戶端,然后在客戶端上將數(shù)據(jù)轉(zhuǎn)換成XML。
將數(shù)據(jù)轉(zhuǎn)換成XML 將ClientSideXml屬性設(shè)置成True來實(shí)現(xiàn)這一步。你仍然用帶有FOR XML子句的SELECT語(yǔ)句,但是當(dāng)你將ClientSideXml設(shè)置為True時(shí),在將語(yǔ)句傳送到SQL Server前,托管類將FOR XML子句從SQL語(yǔ)句中去掉了。數(shù)據(jù)庫(kù)不再看到FOR XML子句,可以更有效地將數(shù)據(jù)流返回給客戶端。然后,SQL托管類在客戶端將數(shù)據(jù)流轉(zhuǎn)換成XML。
通過調(diào)用ExecuteXmlReader方法來執(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。通過打開一個(gè)新的VB6 ActiveX DLL項(xiàng)目來創(chuàng)建這個(gè)項(xiàng)目。重新命名Class1為ADO26,命名項(xiàng)目為DBXMLVS6。然后,給項(xiàng)目添加ActiveX Data Objects 2.6引用。一旦完成這一步,就給你的類添加ExecuteSelect方法(見列表3)。
同所有其它例子一樣,你先要?jiǎng)?chuàng)建并打開你的數(shù)據(jù)庫(kù)連接。然后,創(chuàng)建新的Command對(duì)象,并給Connection對(duì)象設(shè)置其ActiveConnection屬性。SELECT語(yǔ)句同ADO.NET例子中用的SELECT語(yǔ)句一樣。
|
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!