Partager via


Persistance des enregistrements au format XML

Comme le format ADTG, la persistance Recordset au format XML est implémentée avec le fournisseur de persistance Microsoft OLE DB. Ce fournisseur génère un ensemble de lignes en lecture seule en lecture seule à partir d’un fichier XML ou d’un flux XML enregistré qui contient les informations de schéma générées par ADO. De même, il peut prendre un Recordset ADO, générer du code XML et l’enregistrer dans un fichier ou tout objet qui implémente l’interface COM IStream . (En fait, un fichier n’est qu’un autre exemple d’objet qui prend en charge IStream.) Pour les versions 2.5 et ultérieures, ADO s’appuie sur l’analyseur Microsoft XML (MSXML) pour charger le code XML dans l’objet Recordset ; par conséquent, msxml.dll est nécessaire.

Notes

Certaines limitations s’appliquent lors de l’enregistrement de Recordsets (formes de données) au format XML. Vous ne pouvez pas enregistrer dans XML si l’objet Recordset hiérarchique contient des mises à jour en attente et que vous ne pouvez pas enregistrer un Recordset hiérarchique paramétrable. Pour plus d’informations, consultez Conserver les jeux d’enregistrements filtrés et hiérarchiques.

Le moyen le plus simple de conserver des données en XML et de le charger à nouveau via ADO est avec les méthodes Enregistrer et Ouvrir , respectivement. L’exemple de code ADO suivant illustre l’enregistrement des données dans la table Titres dans un fichier nommé 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 conserve toujours l’objet Recordset entier. Si vous souhaitez conserver un sous-ensemble de lignes de l’objet Recordset, utilisez la méthode Filtre pour affiner les lignes ou modifier votre clause de sélection. Toutefois, vous devez ouvrir un objet Recordset avec un curseur côté client (CursorLocation = adUseClient) pour utiliser la méthode Filtre pour enregistrer un sous-ensemble de lignes. Par exemple, pour récupérer des titres commençant par la lettre « b », vous pouvez appliquer un filtre à un objet Recordset ouvert :

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

ADO utilise toujours l’ensemble de lignes du moteur de curseur client pour produire un objet Recordset modifiable et modifiable en haut des données de transfert uniquement générées par le fournisseur de persistance.

Cette section contient les rubriques suivantes :