Compartilhar via


Persistindo registros no formato XML

Assim como o formato ADTG, a persistência recordset no formato XML é implementada com o Provedor de Persistência do Microsoft OLE DB. Este provedor gera um conjunto de resultados, de leitura e acesso apenas sequencial, a partir de um arquivo XML salvo ou de um fluxo que contém as informações de esquema geradas pelo ADO. Da mesma forma, pode pegar um Recordset do ADO, gerar XML e salvá-lo em um arquivo ou em qualquer objeto que implemente a interface COM IStream. (Na verdade, um arquivo é apenas mais um exemplo de um objeto que dá suporte a IStream.) Para versões 2.5 e posteriores, o ADO conta com o Microsoft XML Parser (MSXML) para carregar o XML no conjunto de registros ; portanto, msxml.dll é necessário.

Nota

Algumas limitações se aplicam ao salvar recordsets hierárquicos (formas de dados) no formato XML. Você não poderá salvar em XML se o conjunto de registros hierárquico contiver atualizações pendentes, e não poderá salvar um conjunto de registros hierárquicocom parâmetros. Para obter mais informações, consulte Persistindo Conjuntos de Registros Filtrados e Hierárquicos.

A maneira mais fácil de persistir dados em XML e carregá-los novamente por meio do ADO é com os métodos Salvar e Abrir, respectivamente. O exemplo de código ADO a seguir demonstra como salvar os dados na tabela títulos em um arquivo chamado 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  

O ADO sempre persiste todo o objeto Recordset. Se você quiser persistir um subconjunto de linhas do objeto Recordset, use o método filtro para restringir as linhas ou alterar sua cláusula de seleção. No entanto, você deve abrir um objeto Recordset com um cursor do lado do cliente (CursorLocation = adUseClient) para usar o método Filter para salvar um subconjunto de linhas. Por exemplo, para recuperar títulos que começam com a letra "b", você pode aplicar um filtro a um objeto do Recordset aberto:

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

O ADO sempre usa o conjunto de linhas do Mecanismo de Cursor do Cliente para produzir um objeto recordset rolável e com indicadores sobre os dados somente de encaminhamento gerados pelo Provedor de Persistência.

Esta seção contém os tópicos a seguir.