Поделиться через


Сохранение записей в формате XML

Область применения: Access 2013, Office 2013

Как и в формате ADTG, сохраняемость набора записей в формате XML реализуется с поставщиком сохраняемости Microsoft OLE DB. Этот поставщик создает набор строк только для чтения, доступный только для чтения, из сохраненного XML-файла или потока, который содержит сведения о схеме, созданные ADO. Аналогичным образом он может принимать набор записей ADO, создавать XML и сохранять его в файл или любой объект, реализующий интерфейс COM IStream . (На самом деле файл — это просто еще один пример объекта, поддерживающего IStream.) В версиях 2.5 и более поздних ADO использует средство синтаксического анализа MICROSOFT XML (MSXML) для загрузки XML-кода в набор записей. поэтому требуется msxml.dll. Для версии 2.5 MSXML поставляется с Internet Обозреватель 5. Для версии 2.6 MSXML поставляется с SQL Server 2000.

Примечание.

При сохранении иерархических наборов записей (фигур данных) в формате XML применяются некоторые ограничения. Невозможно сохранить в XML-коде, если иерархический набор записей содержит ожидающие обновления, и невозможно сохранить параметризованный иерархический набор записей. Дополнительные сведения см. в разделе Иерархические наборы записей в XML.

Самый простой способ сохранить данные в XML и снова загрузить их с помощью ADO с помощью методов Save и Open соответственно. В следующем примере кода 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 , чтобы сузить строки или изменить предложение выбора. Однако необходимо открыть объект Recordset с клиентским курсором (CursorLocation = adUseClient), чтобы использовать метод Filter для сохранения подмножества строк. Например, чтобы получить заголовки, начинающиеся с буквы "b", можно применить фильтр к открытому объекту Recordset :

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

ADO всегда использует набор строк клиентского обработчика курсоров для создания прокручиваемого объекта Recordset с возможностью закладки поверх данных только для пересылки, созданных поставщиком сохраняемости.

В этой статье содержатся следующие разделы: