Поделиться через


Потоки и сохраняемость

Объект Recordset метод Save сохраняет, или поддерживает, набор записей в файле, а метод Open восстанавливает набор записей из этого файла.

С помощью ADO 2.7 или более поздней версии методы Save и Open могут также сохранять Recordset в объект Stream. Эта функция особенно полезна при работе с удаленной службой данных (RDS) и активными серверными страницами (ASP).

Дополнительные сведения о том, как сохраняемость можно использовать на страницах ASP, см. в текущей документации по ASP.

Ниже приведены несколько сценариев, показывающих, как можно использовать объекты потока Stream и их сохраняемость.

Сценарий 1

Этот сценарий просто сохраняет набор записей в файл, а затем в 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

Этот сценарий сохраняет набор записей в Stream в формате XML. Затем 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

В этом примере кода ASP сохраняется набор записей в виде XML непосредственно в объект ответа:

...  
<%  
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 клиенту. Служба Microsoft Cursor Service для OLE DB может использовать эти данные для создания отключенного Recordset.

Новое свойство на DataControlв RDS, URL, указывает на .asp страницу, которая создает Recordset. Это означает, что объект набора записей можно получить без RDS с помощью серверного объекта DataFactory или пользователя, написающего бизнес-объект. Это значительно упрощает модель программирования 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>  

Разработчики также могут использовать объект набора записей на клиенте:

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

См. также

Метод Open (ADO Recordset)
объект записи (ADO)
метод сохранения