Compartir a través de


Secuencias y persistencia

El método Save del objeto Recordset almacena, o conserva, un objeto Recordset en un archivo y el método Open restaura el objeto Recordset desde ese archivo.

Con ADO 2.7 o posterior, los métodos Save y Open también pueden conservar un objeto Recordset en un objeto Stream. Esta característica es especialmente útil cuando se trabaja con Remote Data Service (RDS) y Active Server Pages (ASP).

Para más información sobre cómo la persistencia se puede usar por sí misma en páginas ASP, consulte la documentación actual de ASP.

A continuación, se muestran algunos escenarios que muestran cómo se pueden usar los objetos Stream y la persistencia.

Escenario 1

En este escenario simplemente se guarda un objeto Recordset en un archivo y, luego, en un objeto Stream. A continuación, se abre la secuencia persistente en otro objeto Recordset.

Dim rs1 As ADODB.Recordset  
Dim rs2 As ADODB.Recordset  
Dim stm As ADODB.Stream  
  
Set rs1 = New ADODB.Recordset  
Set rs2 = New ADODB.Recordset  
Set stm = New ADODB.Stream  
  
rs1.Open   "SELECT * FROM Customers", "Provider=sqloledb;" & _  
        "Data Source=MyServer;Initial Catalog=Northwind;" & _  
        "Integrated Security=SSPI;""", adopenStatic, adLockReadOnly, adCmdText  
rs1.Save "c:\myfolder\mysubfolder\myrs.xml", adPersistXML  
rs1.Save stm, adPersistXML  
rs2.Open stm  

Escenario 2

En este escenario se conserva un objeto Recordset en un objeto Stream en formato XML. A continuación, se lee el objeto Stream una cadena que puede examinar, manipular o mostrar.

Dim rs As ADODB.Recordset  
Dim stm As ADODB.Stream  
Dim strRst As String  
  
Set rs = New ADODB.Recordset  
Set stm = New ADODB.Stream  
  
' Open, save, and close the recordset.   
rs.Open "SELECT * FROM Customers", "Provider=sqloledb;" & _  
        "Data Source=MyServer;Initial Catalog=Northwind;" & _  
        "Integrated Security=SSPI;"""  
rs.Save stm, adPersistXML  
rs.Close  
Set rs = nothing  
  
' Put saved Recordset into a string variable.  
strRst = stm.ReadText(adReadAll)  
  
' Examine, manipulate, or display the XML data.  
...  

Escenario 3

En este código de ejemplo se muestra el código ASP que conserva un objeto Recordset como XML directamente en el objeto Response:

...  
<%  
response.ContentType = "text/xml"  
  
' Create and open a Recordset.  
Set rs = Server.CreateObject("ADODB.Recordset")  
rs.Open "select * from Customers", "Provider=sqloledb;" & _  
        "Data Source=MyServer;Initial Catalog=Northwind;" & _  
        "Integrated Security=SSPI;"""  
  
' Save Recordset directly into output stream.  
rs.Save Response, adPersistXML   
  
' Close Recordset.  
rs.Close  
Set rs = nothing  
%>  
...  

Escenario 4

En este escenario, el código ASP escribe el contenido del objeto Recordset en formato ADTG en el cliente. El Servicio de cursores de Microsoft para OLE DB puede usar estos datos para crear un objeto Recordset desconectado.

Una nueva propiedad de RDS DataControl, URL, apunta a la página .asp que genera el objeto Recordset. Esto significa que un objeto Recordset se puede obtener sin RDS mediante el objeto DataFactory del lado servidor o el usuario que escribe un objeto de negocio. Esto simplifica significativamente el modelo de programación de RDS.

Código del lado servidor, denominado https://server/directory/recordset.asp:

<%  
Dim rs   
Set rs = Server.CreateObject("ADODB.Recordset")  
rs.Open "select au_fname, au_lname, phone from Authors", ""& _  
        "Provider=sqloledb;Data Source=MyServer;" & _  
        "Initial Catalog=Pubs;Integrated Security=SSPI;"  
response.ContentType = "multipart/mixed"  
rs.Save response, adPersistADTG  
%>  

Código del lado cliente:

<HTML>  
<HEAD>  
<TITLE>RDS Query Page</TITLE>  
</HEAD>  
<body>  
<CENTER>  
<H1>Remote Data Service 2.5</H1>  
<TABLE DATASRC="#DC1">  
   <TR>   
      <TD><SPAN DATAFLD="au_fname"></SPAN></TD>  
      <TD><SPAN DATAFLD="au_lname"></SPAN></TD>  
      <TD><SPAN DATAFLD="phone"></SPAN></TD>  
   </TR>  
</TABLE>  
<BR>  
  
<OBJECT classid="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33"  
    ID=DC1 HEIGHT=1 WIDTH = 1>  
    <PARAM NAME="URL" VALUE="https://server/directory/recordset.asp">  
</OBJECT>  
  
</SCRIPT>  
</BODY>  
</HTML>  

Los desarrolladores también tienen la opción de usar un objeto Recordset en el cliente:

...  
function GetRs()   
    {  
    rs = CreateObject("ADODB.Recordset");  
    rs.Open "https://server/directory/recordset.asp"  
    DC1.SourceRecordset = rs;  
    }  
...  

Consulte también

Open (método) (conjunto de registros ADO)
Objeto Record (ADO)
Save (método)