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