Flux et persistance
La méthode Save de l’objet Recordset stocke, ou conserve, un Recordset dans un fichier, et la méthode Open restaure le Recordset à partir de ce fichier.
Avec ADO 2.7 ou version ultérieure, les méthodes Save et Open peuvent également conserver un Recordset dans un objet Stream. Cette fonctionnalité est particulièrement utile lors de l’utilisation de Remote Data Service (RDS) et des pages ASP (Active Server Pages).
Pour plus d’informations sur la façon dont la persistance peut être utilisée par elle-même sur les pages ASP, consultez la documentation ASP actuelle.
Voici quelques scénarios qui montrent comment les objets Stream et la persistance peuvent être utilisés.
Scénario 1
Ce scénario enregistre simplement un Recordset dans un fichier, puis dans un Stream. Il ouvre ensuite le flux conservé dans un autre 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
Scénario 2
Ce scénario conserve un Recordset dans un Stream au format XML. Il lit ensuite l’objet Stream dans une chaîne que vous pouvez examiner, manipuler ou afficher.
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.
...
Scénario 3
Cet exemple de code montre le code ASP qui conserve un Recordset en tant que XML directement dans l’objet 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
%>
...
Scénario 4
Dans ce scénario, le code ASP écrit le contenu du Recordset au format ADTG dans le client. Le Service de curseur Microsoft pour OLE DB peut utiliser ces données pour créer un Recordset déconnecté.
Une nouvelle propriété sur l’objet DataControl RDS, URL, pointe vers la page .asp qui génère l’objet Recordset. Cela signifie qu’un objet Recordset peut être obtenu sans RDS à l’aide de l’objet DataFactory côté serveur ou de l’utilisateur qui écrit un objet métier. Cela simplifie considérablement le modèle de programmation RDS.
Code côté serveur, nommé 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
%>
Code côté 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>
Les développeurs ont également la possibilité d’utiliser un objet Recordset sur le client :
...
function GetRs()
{
rs = CreateObject("ADODB.Recordset");
rs.Open "https://server/directory/recordset.asp"
DC1.SourceRecordset = rs;
}
...
Voir aussi
Open, méthode (objet Recordset ADO)
Record, objet (ADO)
Save, méthode