Compartilhar via


Fluxos e persistência

O objeto RecordsetSalvar armazena ou persiste, um conjunto de registros em um arquivo e o método Open restaura o Recordset desse arquivo.

Com o ADO 2.7 ou posterior, os métodos Save e Open também podem persistir um Recordset em um objeto Stream. Esse recurso é especialmente útil ao trabalhar com RDS (Serviço de Dados Remoto) e ASP (Active Server Pages).

Para obter mais informações sobre como a persistência pode ser usada por si só em páginas ASP, consulte a documentação atual do ASP.

A seguir, veja alguns cenários que mostram como objetos do tipo Stream e a persistência podem ser usados.

Cenário 1

Esse cenário simplesmente salva um Recordset em um arquivo e, em seguida, em um Stream. Em seguida, ele abre o fluxo persistente em outro Conjunto de Registros .

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  

Cenário 2

Esse cenário persiste um Recordset em um Stream no formato XML. Em seguida, ele lê o Stream em uma cadeia de caracteres que você pode examinar, manipular ou exibir.

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

Cenário 3

Este código de exemplo mostra o código ASP persistindo um Recordset como XML diretamente no objeto de resposta :

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

Cenário 4

Nesse cenário, o código ASP grava o conteúdo do conjunto de registros no formato ADTG no cliente. O Microsoft Cursor Service for OLE DB pode usar esses dados para criar um conjunto de registros desconectado.

Uma nova propriedade no DataControl, URL, aponta para a página .asp que gera o Recordset. Isso significa que um objeto Recordset pode ser obtido sem RDS usando o objeto DataFactory do servidor ou o usuário que está gravando um objeto de negócios. Isso simplifica significativamente o modelo de programação rds.

Código do lado do servidor, chamado 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  
%>  

Código do lado do cliente:

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

Os desenvolvedores também têm a opção de usar um objeto Recordset no cliente:

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

Consulte Também

Método Open (ADO Recordset)
Objeto de Registro (ADO)
salvar método