Persistenza di record in formato XML
Analogamente al formato ADTG, la persistenza dell'oggetto Recordset in formato XML viene implementata con il provider di persistenza Microsoft OLE DB. Questo provider genera un set di righe forward-only di sola lettura da un file o un flusso XML salvato che contiene le informazioni sullo schema generate da ADO. Analogamente, può accettare un oggetto Recordset ADO, generarne il codice XML e salvarlo in un file o in qualsiasi oggetto che implementi l'interfaccia COM IStream. In realtà, un file è solo un altro esempio di un oggetto che supporta IStream. Per le versioni 2.5 e successive, ADO si basa su Microsoft XML Parser (MSXML) per caricare il codice XML nell'oggetto Recordset; pertanto è necessario msxml.dll.
Nota
Quando si salvano oggetti Recordset gerarchici (forme dati) in formato XML, si applicano alcune limitazioni. Non è possibile salvare in XML se l'oggetto Recordset gerarchico contiene aggiornamenti in sospeso e non è possibile salvare un oggetto Recordset gerarchico con parametri. Per altre informazioni, vedere Persistenza di recordset filtrati e gerarchici.
Il modo più semplice per rendere persistenti i dati in XML e caricarli nuovamente tramite ADO è quello di usare rispettivamente i metodi Save e Open. Nell'esempio di codice ADO seguente viene illustrato il salvataggio dei dati della tabella Titles in un file denominato 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 rende persistente sempre l'intero oggetto Recordset. Se si vuole rendere persistente un subset di righe dell'oggetto Recordset, usare il metodo Filter per limitare le righe o modificare la clausola di selezione. È tuttavia necessario aprire un oggetto Recordset con un cursore lato client (CursorLocation = adUseClient) per usare il metodo Filter per salvare un subset di righe. Ad esempio, per recuperare i titoli che iniziano con la lettera "b", è possibile applicare un filtro a un oggetto Recordset aperto:
rs.Filter "title_id like 'B*'"
rs.Save "btitles.sav", adPersistXML
ADO usa sempre il set di righe del motore del cursore client per produrre un oggetto Recordset scorrevole e contrassegnabile con segnalibri sopra i dati forward-only generati dal provider di persistenza.
Questa sezione descrive gli argomenti seguenti: