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