Share via


以 XML 格式保存記錄

如同 ADTG 格式,以 XML 格式保存 Recordset 是透過 Microsoft OLE DB 持續性提供者來實作。 此提供者會從儲存的 XML 檔案或串流產生順向唯讀資料列集,以包含 ADO 所產生的結構描述資訊。 同樣地,它可以擷取 ADO Recordset、產生 XML,然後將其儲存至檔案或任何實作 COM IStream 介面的物件 (事實上,檔案只是支援 IStream 的另一個物件範例)。在 2.5 版和更新版本中,ADO 依賴 Microsoft XML 剖析器 (MSXML) 將 XML 載入 Recordset,因此需要 msxml.dll。

注意

將階層式 Recordset (資料圖形) 儲存至 XML 格式時,會適用一些限制。 如果階層式 Recordset 包含擱置中的更新,而且無法儲存參數化的階層式 Recordset,則無法儲存至 XML。 如需詳細資訊,請參閱保存篩選過的階層式資料錄集

將資料保存在 XML 中並透過 ADO 再次載回的最簡單方式是使用 SaveOpen 方法。 下列 ADO 程式碼範例示範如何將 Titles 資料表中的資料儲存至名為 titles.sav 的檔案。

Dim rs as new Recordset  
Dim rs2 as new Recordset  
Dim c as new Connection  
Dim s as new Stream  
  
' Query the Titles table.  
c.Open "provider=sqloledb;data source=MySQLServer;initial catalog=pubs;Integrated Security='SSPI'"  
rs.cursorlocation = adUseClient  
rs.Open "select * from titles", c, adOpenStatic  
  
' Save to the file in the XML format. Note that if you don't specify   
' adPersistXML, a binary format (ADTG) will be used by default.  
rs.Save "titles.sav", adPersistXML  
  
' Save the recordset into the ADO Stream object.  
rs.save s, adPersistXML  
rs.Close  
c.Close  
  
set rs = nothing  
  
' Reopen the file.  
rs.Open "titles.sav",,,,adCmdFile  
' Open the Stream back into a Recordset.  
rs2.open s  

ADO 一律會保存整個 Recordset 物件。 如果您想要保存 Recordset 物件的資料列子集,請使用 Filter 方法來縮小資料列範圍,或變更您的選取子句。 不過,您必須使用用戶端資料指標 (CursorLocation = adUseClient) 開啟 Recordset 物件,才能使用 Filter 方法來儲存資料列子集。 例如,若要擷取以字母 "b" 開頭的標題,您可以對開啟的 Recordset 物件套用篩選:

rs.Filter "title_id like 'B*'"  
rs.Save "btitles.sav", adPersistXML  

ADO 一律會使用用戶端資料指標引擎資料列集,在持續性提供者所產生的順向資料之上,產生可捲動且可加入書籤的 Recordset 物件。

此章節包含下列主題。