共用方式為


以 XML 格式持續保存記錄

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

注意

將階層式 Recordets (資料圖形) 儲存為 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 物件,以運用持久性提供者所產生的僅向前數據之上。

本節包含下列主題。