Datenströme und Persistenz

Mit der Save-Methode des Recordset-Objekts wird ein Recordset in einer Datei gespeichert bzw. dauerhaft gespeichert, und die Open-Methode stellt das Recordset aus dieser Datei wieder her.

Bei ADO 2.7 oder höher können die Save- und Open-Methoden auch ein Recordset in einem Stream-Objekt dauerhaft speichern. Dieses Feature ist besonders beim Arbeiten mit Remote Data Service (RDS) und Active Server Pages (ASP) nützlich.

Weitere Informationen dazu, wie Persistenz eigenständig auf ASP-Seiten verwendet werden kann, finden Sie in der aktuellen ASP-Dokumentation.

Im Folgenden finden Sie einige Szenarien, in denen gezeigt wird, wie Stream-Objekte und Persistenz verwendet werden können.

Szenario 1

In diesem Szenario wird einfach ein Recordset in einer Datei und dann in einem Stream gespeichert. Anschließend wird der dauerhaft gespeicherte Stream in einem anderen Recordset geöffnet.

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  

Szenario 2

In diesem Szenario wird ein Recordset in einem Stream im XML-Format dauerhaft gespeichert. Anschließend wird der Stream in eine Zeichenfolge gelesen, die Sie untersuchen, bearbeiten oder anzeigen können.

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.  
...  

Szenario 3

In diesem Beispielcode wird ASP-Code gezeigt, der ein Recordset als XML direkt im Response-Objekt dauerhaft speichert:

...  
<%  
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  
%>  
...  

Szenario 4

In diesem Szenario schreibt ASP-Code den Inhalt des Recordset im ADTG-Format in den Client. Der Microsoft-Cursordienst für OLE DB kann diese Daten verwenden, um ein getrenntes Recordset zu erstellen.

Eine neue Eigenschaft im RDS-DataControl-Objekt, URL, verweist auf die ASP-Seite, die das Recordset generiert. Dies bedeutet, dass ein Recordset-Objekt ohne RDS mit dem serverseitigen DataFactory-Objekt oder den Benutzer*innen, die ein Geschäftsobjekt schreiben, abgerufen werden kann. Dadurch wird das RDS-Programmiermodell erheblich vereinfacht.

Serverseitiger Code namens 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  
%>  

Clientseitiger Code:

<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>  

Entwickler haben auch die Möglichkeit, ein Recordset-Objekt auf dem Client zu verwenden:

...  
function GetRs()   
    {  
    rs = CreateObject("ADODB.Recordset");  
    rs.Open "https://server/directory/recordset.asp"  
    DC1.SourceRecordset = rs;  
    }  
...  

Weitere Informationen

Open-Methode (ADO-Recordset)
Record-Objekt (ADO)
Save-Methode