流和暂留

Recordset 对象 Save 方法将 Recordset 存储或持久保存在文件中,Open 方法从该文件还原 Recordset。

对于 ADO 2.7 或更高版本,Save 和 Open方法也可以将 Recordset 持久保存到 Stream 对象。 此功能在使用远程数据服务 (RDS) 和 Active Server Pages (ASP) 时特别有用。

有关如何在 ASP 页面上单独使用持久性的详细信息,请参阅当前的 ASP 文档。

以下是展示如何使用 Stream 对象和持久性的几个方案。

方案 1

此方案只是将 Recordset 保存到文件,然后保存到 Stream。 然后,它将持久流连接到另一个 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  

方案 2

此方案将 Recordset 保存到 XML 格式的 Stream 中。 然后它将 Stream 读入一个字符串,你可以检查、操作或显示该字符串。

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

方案 3

此示例代码显示了将 Recordset 作为 XML 直接保存到 Response 对象的 ASP 代码:

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

方案 4

在此方案中,ASP 代码以 ADTG 格式将 Recordset 的内容写入客户端。 用于 OLE DB 的 Microsoft 游标服务可以使用此数据来创建断开连接的 Recordset。

RDS DataControl 上的新属性 URL 指向生成 Recordset 的 .asp 页面。 这意味着,无需使用服务器端 DataFactory 对象的 RDS 也无需用户编写业务对象即可获取 Recordset 对象。 这大大简化了 RDS 编程模型。

服务器端代码,名为 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  
%>  

客户端代码:

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

开发人员还可以选择在客户端上使用 Recordset 对象:

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

另请参阅

Open 方法(ADO 记录集)
记录对象 (ADO)
Save 方法