ストリームと永続化
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 を読み取り、調べたり、操作したり、表示したりできる文字列に読み込みます。
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 の内容をクライアントに書き込みます。 Microsoft Cursor Service for OLE DB では、このデータを使用して、切断された Recordsetを作成できます。
RDS DataControlの新しいプロパティ (URL) は、Recordsetを生成する.asp ページを指します。 つまり、Recordset オブジェクトは、サーバー側 DataFactory オブジェクトまたはビジネス オブジェクトを書き込むユーザーを使用して RDS なしで取得できます。 これにより、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;
}
...