Condividi tramite


Flussi e persistenza

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

Con ADO 2.7 o versioni successive, anche i metodi Save e Open possono salvare in modo permanente 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 sola nelle pagine ASP, vedere la documentazione ASP corrente.

Di seguito sono riportati alcuni scenari che illustrano come usare gli oggetti Stream e la persistenza.

Scenario 1

Questo scenario salva semplicemente un oggetto Recordset in un file e quindi in un oggetto Stream. Apre quindi il flusso memorizzato in modo permanente 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 salva in modo permanente un oggetto Recordset in un oggetto Stream in formato XML. Legge quindi Stream 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 salva in modo permanente un oggetto Recordset come file 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 dell'oggetto Recordset in formato ADTG nel client. Il Servizio cursore Microsoft per OLE DB può usare questi dati per creare un oggetto Recordset disconnesso.

Una nuova proprietà in DataControl di RDS, URL, punta alla pagina .asp che genera l'oggetto Recordset. Ciò significa che un oggetto Recordset può essere ottenuto senza che RDS usi l'oggetto DataFactory lato server e senza che l'utente debba scrivere un oggetto business. Questo semplifica in modo significativo il modello di programmazione RDS.

Codice del 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 del 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;  
    }  
...  

Vedi anche

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