Flux et persistance
L’objet Recordset enregistre avec la méthode Save, ou conserve, un jeu d'enregistrements dans un fichier, et la méthode Open restaure le jeu d'enregistrements à partir de ce fichier.
Avec ADO 2.7 ou version ultérieure, les méthodes Save et Open peuvent également conserver un jeu d’enregistrements dans un objet Stream . Cette fonctionnalité est particulièrement utile lors de l’utilisation du service de données distant (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 jeu d’enregistrements dans un fichier, puis dans un flux . Il ouvre ensuite le flux persistant dans un autre jeu d’enregistrements .
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 jeu d’enregistrements dans un flux au format XML. Il lit ensuite le 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 persistant un jeu d’enregistrements en tant que code 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 les contenus du jeu d’enregistrements au format ADTG au client. Le service de curseur Microsoft pour OLE DB peut utiliser ces données pour créer un jeu d’enregistrements déconnecté.
Une nouvelle propriété sur le DataControlRdS , URL, pointe vers la page .asp qui génère le jeu d’enregistrements . 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
Méthode Open (jeu d’enregistrements ADO)
Objet d'enregistrement (ADO)
Méthode d'enregistrement