使用ADO相關技巧與使用習慣
使用ADO因為少數文件無法轉換而無法加載工程,為此我也苦惱很久,后來終于讓我找到了解決辦法,而且還可以知道數據的分割位置。在我們平常的應用中,我們得到的結果可能是數組、集合或記錄集的表現形式,我們該如何把它們轉換成自描述的XML格式的數據呢?
從數據形式上看,XML是簡單的純字符串的文本格式,字符串在傳遞時是非常簡單、快速而且是容易的,使用ADO數組在通過引用進行傳遞時有時是很慢的,而且處理起來很麻煩,而集合和記錄集都是對象,在處理時會導致計算機性能的下降。
使用ADO并且這些對象都是與特定的平臺相關聯的,這就要求平臺有內建的處理機制來處理對象的操作。使用ADO已經是W3C的標準,是平臺無關的,我們的計算機的***要求就是能夠處理簡單的XML字符串,即XML解析器。#t#
它能夠解析XML字符串,能夠通過一種接口很容易地把數據分解成一個個獨立的數據段,以便我們能夠進行訪問。XML解析器都很小,性能也很好,在每種平臺上都可以找到。一旦我們接收到XML數據并把它解析成上面的例子的樣式后。
我們就可以通過XSLT(eXstensible Stylesheet Language Transformations)把他們轉換成不同的表現形式。使用ADO利用XML的數據格式進行數據傳輸,將會使我們編寫應用程序代碼的工作更簡單輕松,而且具有良好的可伸縮性。
下面,我們就看看如何來轉換我們的數據。我們的例子是在Microsoft Windows 2000,IIS5,MSXML3和ADO2.6下編寫的,樣例數據采用Microsoft SQL Server7.0自帶的Northwind示例數據庫。之所以采用SQL Server7而不采用支持XML的SQL Server使用ADO2000,是考慮到通用性的原則,我們的目的是:處理不同類型的數據源得到的記錄集,而不僅僅是象SQL Server2000那樣的支持XML輸出的數據源。
使用ADO,是因為它形式多樣,可以處理不同類型的數據源;使用XML,是因為它能夠快速傳輸和解析。但本例的處理方法也適合在任何具有Micrsoft XML解析器,ADO2.5或以上版本的Windows,IIS,SQL Server的環境中。為簡單起見,我們僅選擇單價小于等于20美圓,庫存大于等于20,產品名稱小于等于6個字符的產品:
- <%
- 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;"
- %>
現在,我們就用3種方式把我們得到的記錄集轉換成XML格式。首先,使用ADO我們可以遍歷整個記錄集,采用XML DOM(Document Object Model),建立XML節點樹: