使用ADO相關(guān)技巧與使用習(xí)慣
使用ADO因?yàn)樯贁?shù)文件無法轉(zhuǎn)換而無法加載工程,為此我也苦惱很久,后來終于讓我找到了解決辦法,而且還可以知道數(shù)據(jù)的分割位置。在我們平常的應(yīng)用中,我們得到的結(jié)果可能是數(shù)組、集合或記錄集的表現(xiàn)形式,我們該如何把它們轉(zhuǎn)換成自描述的XML格式的數(shù)據(jù)呢?
從數(shù)據(jù)形式上看,XML是簡單的純字符串的文本格式,字符串在傳遞時是非常簡單、快速而且是容易的,使用ADO數(shù)組在通過引用進(jìn)行傳遞時有時是很慢的,而且處理起來很麻煩,而集合和記錄集都是對象,在處理時會導(dǎo)致計算機(jī)性能的下降。
使用ADO并且這些對象都是與特定的平臺相關(guān)聯(lián)的,這就要求平臺有內(nèi)建的處理機(jī)制來處理對象的操作。使用ADO已經(jīng)是W3C的標(biāo)準(zhǔn),是平臺無關(guān)的,我們的計算機(jī)的***要求就是能夠處理簡單的XML字符串,即XML解析器。#t#
它能夠解析XML字符串,能夠通過一種接口很容易地把數(shù)據(jù)分解成一個個獨(dú)立的數(shù)據(jù)段,以便我們能夠進(jìn)行訪問。XML解析器都很小,性能也很好,在每種平臺上都可以找到。一旦我們接收到XML數(shù)據(jù)并把它解析成上面的例子的樣式后。
我們就可以通過XSLT(eXstensible Stylesheet Language Transformations)把他們轉(zhuǎn)換成不同的表現(xiàn)形式。使用ADO利用XML的數(shù)據(jù)格式進(jìn)行數(shù)據(jù)傳輸,將會使我們編寫應(yīng)用程序代碼的工作更簡單輕松,而且具有良好的可伸縮性。
下面,我們就看看如何來轉(zhuǎn)換我們的數(shù)據(jù)。我們的例子是在Microsoft Windows 2000,IIS5,MSXML3和ADO2.6下編寫的,樣例數(shù)據(jù)采用Microsoft SQL Server7.0自帶的Northwind示例數(shù)據(jù)庫。之所以采用SQL Server7而不采用支持XML的SQL Server使用ADO2000,是考慮到通用性的原則,我們的目的是:處理不同類型的數(shù)據(jù)源得到的記錄集,而不僅僅是象SQL Server2000那樣的支持XML輸出的數(shù)據(jù)源。
使用ADO,是因?yàn)樗问蕉鄻?,可以處理不同類型的?shù)據(jù)源;使用XML,是因?yàn)樗軌蚩焖賯鬏敽徒馕?。但本例的處理方法也適合在任何具有Micrsoft XML解析器,ADO2.5或以上版本的Windows,IIS,SQL Server的環(huán)境中。為簡單起見,我們僅選擇單價小于等于20美圓,庫存大于等于20,產(chǎn)品名稱小于等于6個字符的產(chǎn)品:
- <%
- Dim objRecordset
- Set objRecordset = Server.CreateObject("ADODB.Recordset")
- objRecordset.open _
- "SELECT ProductName, UnitPrice, UnitsInStock " _
- & "FROM Products " _
- & "WHERE UnitPrice <= 20 " _
- & "AND UnitsInStock >= 20 " _
- & "AND LEN(ProductName) <= 6 " _
- & "ORDER BY ProductName", _
- "Provider=SQLOLEDB;" _
- & "Data Source=SomeSQLServer;" _
- & "Initial Catalog=Northwind;" _
- & "User ID=MyUserName;" _
- & "Password=MyPassword;"
- %>
現(xiàn)在,我們就用3種方式把我們得到的記錄集轉(zhuǎn)換成XML格式。首先,使用ADO我們可以遍歷整個記錄集,采用XML DOM(Document Object Model),建立XML節(jié)點(diǎn)樹:


2009-12-21 16:40:10




