以 XML 格式暂留记录

适用于:Access 2013、Office 2013

像 ADTG 格式一样,可以通过 Microsoft OLE DB Persistence Provider 用 XML 格式持久化 Recordset 。 此提供程序可以从保存的 XML 文件或流(它们包含 ADO 生成的架构信息)生成仅向前的只读行集。 同样,它可以获取 ADO Recordset、生成 XML 并将其保存到文件或实现 COM IStream 接口的任何对象。 (事实上,文件只是支持 IStream.) 对于 2.5 版及更高版本,ADO 依赖于 Microsoft XML 分析器 (MSXML) 将 XML 加载到 Recordset 中;因此,需要 msxml.dll。 对于 2.5 版本,这是 Internet Explorer 5 附带的 MSXML。 对于 2.6 版本,则是 SQL Server 2000 附带的 MSXML。

注意

[!注释] 在将分层 Recordset (数据定形)保存到 XML 格式时,有某些限制。 如果分层 Recordset 包含挂起的更新,则无法保存到 XML,并且无法保存参数化分层 Recordset 。 有关详细信息,请参阅 XML 中的分层记录集

通过 ADO 将数据持久化到 XML 中并再次加载它的最容易方式是分别使用 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='mydb';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) 使用 Filter 方法保存行子集 (客户端游标打开 Recordset 对象。 例如,若要检索以字母"b"开头的标题,可以将筛选器应用于打开的 Recordset 对象:

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

ADO 总是使用客户端游标引擎行集来产生可滚动、可标记书签的 Recordset 对象,而且生成的对象位于 Persistence Provider 所生成的仅向前数据的顶部。

本节包括下列主题: