Compartir vía


Almacenar registros en formato XML

Al igual que el formato ADTG, la persistencia de Recordset en formato XML se implementa con el proveedor de persistencia OLE DB de Microsoft. Este proveedor genera un conjunto de filas de solo avance y de solo lectura a partir de un archivo XML guardado o una secuencia que contiene la información de esquema generada por ADO. Del mismo modo, puede usar un objeto Recordset de ADO, generar XML y guardarlo en un archivo o en cualquier objeto que implemente la interfaz IStream de COM. (De hecho, un archivo es simplemente otro ejemplo de un objeto que admite IStream). Para las versiones 2.5 y posteriores, ADO se basa en el analizador XML de Microsoft (MSXML) para cargar el XML en el objeto Recordset; por lo tanto, se requiere msxml.dll.

Nota

Algunas limitaciones se aplican al guardar objetos Recordsets jerárquicos (formas de datos) en formato XML. No se puede guardar como XML si el objeto Recordset jerárquico contiene actualizaciones pendientes y no se puede guardar un objeto Recordset jerárquico parametrizado. Para obtener más información, vea Almacenar conjuntos de registros filtrados y jerárquicos.

La manera más fácil de almacenar los datos como XML y cargarlos de nuevo a través de ADO es con los métodos Save y Open, respectivamente. En el ejemplo de código de ADO siguiente se muestra cómo guardar los datos de la tabla Titles en un archivo denominado 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 siempre almacena todo el objeto Recordset. Si desea almacenar un subconjunto de filas del objeto Recordset, use el método Filter para restringir las filas o cambiar la cláusula de selección. Sin embargo, debe abrir un objeto Recordset con un cursor del lado cliente (CursorLocation = adUseClient) para usar el método Filter para guardar un subconjunto de filas. Por ejemplo, para recuperar títulos que comienzan con la letra "b", puede aplicar un filtro a un objeto Recordset abierto:

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

ADO siempre usa el conjunto de filas Client Cursor Engine para generar un objeto Recordset desplazable y marcable sobre los datos de solo avance generados por el proveedor de persistencia.

Esta sección contiene los temas siguientes.