數據流和持續性
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
此範例程式代碼顯示 ASP 程式代碼會將 Recordset 作為 XML 直接儲存至 Response 物件:
...
<%
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 程式碼會將 Recordset 的內容以 ADTG 格式寫入用戶端。 適用於 OLE DB 的 Microsoft Cursor Service 可以使用此資料來建立離線的 Recordset。
RDS DataControl、URL上的新屬性會指向產生 Recordset.asp 頁面。 這表示可以在不需 RDS 的情況下,使用伺服器端的 DataFactory 物件或讓使用者撰寫商業物件,來取得 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;
}
...