Persistência de registros em formato XML
Assim como o formato ADTG, a persistência do Recordset no formato XML é implementada com o Provedor de Persistência do Microsoft OLE DB. Esse provedor gera um conjunto de linhas somente encaminhamento e somente leitura de um fluxo ou arquivo XML salvo que contém as informações de esquema geradas pelo ADO. Da mesma forma, ele pode pegar um Recordset do ADO, gerar XML e salvá-lo em um arquivo ou qualquer objeto que implemente a interface IStream do COM. (Na verdade, um arquivo é apenas mais um exemplo de um objeto que dá suporte a IStream.) Para as versões 2.5 e posteriores, o ADO depende do Analisador MSXML (Microsoft XML) para carregar o XML no Recordset; portanto, msxml.dll é necessário.
Observação
Algumas limitações se aplicam ao salvar Recordsets hierárquicos (formas de dados) no formato XML. Não é possível salvar em XML caso o Recordset hierárquico tenha atualizações pendentes, e você não pode salvar um Recordset hierárquico parametrizado. Para obter mais informações, consulte Persistência de Recordsets 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 Save e Open, respectivamente. O exemplo de código ADO a seguir demonstra como salvar os dados na tabela Títulos em um arquivo nomeado 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 Filter 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 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 que possa ter indicador sobre os dados somente de encaminhamento gerados pelo Provedor de Persistência.
Esta seção contém os seguintes tópicos.