Flussi e persistenza

Il metodo Save dell'oggetto Recordset archivia o persiste un oggetto Recordset in un file e il metodo Open ripristina l'oggetto Recordset da tale file.

Con ADO 2.7 o versioni successive, i metodi Save and Open possono rendere persistenti anche un oggetto Recordset in un oggetto Stream . Questa funzionalità è particolarmente utile quando si usa Remote Data Service (RDS) e Active Server Pages (ASP).

Per altre informazioni sul modo in cui la persistenza può essere usata da se stessa nelle pagine ASP, vedere la documentazione asp corrente.

Di seguito sono riportati alcuni scenari che illustrano il modo in cui è possibile usare oggetti Stream e persistenza.

Scenario 1

Questo scenario salva semplicemente un recordset in un file e quindi in un flusso. Apre quindi il flusso persistente in un altro oggetto 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  

Scenario 2

Questo scenario mantiene un recordset in un flusso in formato XML. Legge quindi il flusso in una stringa che è possibile esaminare, modificare o visualizzare.

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.  
...  

Scenario 3

Questo codice di esempio mostra il codice ASP che mantiene un recordset come XML direttamente nell'oggetto 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  
%>  
...  

Scenario 4

In questo scenario, il codice ASP scrive il contenuto del recordset in formato ADTG nel client. Il servizio Cursore Microsoft per OLE DB può usare questi dati per creare un recordset disconnesso.

Una nuova proprietà in RDS DataControl, URL, punta alla pagina asp che genera l'oggetto Recordset. Ciò significa che un oggetto Recordset può essere ottenuto senza RdS usando l'oggetto DataFactory lato server o l'utente che scrive un oggetto business. In questo modo, il modello di programmazione RDS semplifica in modo significativo.

Codice lato server, denominato 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  
%>  

Codice lato client:

<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>  

Gli sviluppatori hanno anche la possibilità di usare un oggetto Recordset nel client:

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

Vedere anche

Metodo Open (Recordset - ADO)
Oggetto Record (ADO)
Metodo Save