Partage via


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