Freigeben über


Datenströme und Persistenz

Das Recordset-Objekt speichert oder speichert dauerhaftmit der Save-Methode ein Recordset in einer Datei, und die Open-Methode stellt das Recordset aus dieser Datei wieder her.

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

Weitere Informationen dazu, wie Persistenz von sich selbst 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 eine Datei und dann in einen Streamgespeichert. Anschließend öffnet es den gespeicherten Datenstrom in einem anderen 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  

Szenario 2

In diesem Szenario wird ein Recordset- in einem Stream- im XML-Format beibehalten. Anschließend wird der -Stream in eine Zeichenfolge umgewandelt, 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

Dieser Beispielcode zeigt ASP-Code, der ein Recordset direkt als XML in das Response-Objekt 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 Cursor Service für OLE DB kann diese Daten verwenden, um ein getrenntes Recordsetzu erstellen.

Eine neue Eigenschaft im RDS DataControlund in der URLverweist auf die .asp-Seite, die den Recordsetgeneriert. Dies bedeutet, dass ein Recordset-Objekt ohne RDS mithilfe des serverseitigen DataFactory--Objekts oder des Benutzers abgerufen werden kann, der ein Geschäftsobjekt schreibt. Dies vereinfacht das RDS-Programmiermodell erheblich.

Serverseitiger Code mit dem Namen 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;  
    }  
...  

Siehe auch

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