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


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

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

Примечание

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

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

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

Этот раздел содержит следующие подразделы.