스트림 및 지속성
Recordset 개체 Save 메서드는 파일에서 레코드 집합을 저장하거나 유지하며, Open 메서드는 해당 파일에서 레코드 집합을 복원합니다.
ADO 2.7 이상을 사용하면 Save 및 Open 메서드도 Stream 개체에 레코드 집합을 유지할 수 있습니다. 이 기능은 RDS(원격 데이터 서비스) 및 ASP(활성 서버 페이지)로 작업할 때 특히 유용합니다.
ASP 페이지에서 자체적으로 지속성을 사용할 수 있는 방법에 대한 자세한 내용은 현재 ASP 설명서를 참조하세요.
다음은 Stream 개체 및 지속성을 사용하는 방법을 보여 주는 몇 가지 시나리오입니다.
시나리오 1
이 시나리오에서는 레코드 집합을 파일에 저장한 다음, 스트림에 저장합니다. 그런 다음, 지속형 스트림을 다른 레코드 집합으로 엽니다.
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
이 시나리오에서는 레코드 집합을 XML 형식의 스트림으로 유지합니다. 그런 다음, 스트림을 검사, 조작 또는 표시할 수 있는 문자열로 읽습니다.
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
이 예제 코드는 레코드 집합을 Response 개체에 직접 XML로 유지하는 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 형식의 레코드 집합 콘텐츠를 클라이언트에 씁니다. OLE DB용 Microsoft 커서 서비스는 이 데이터를 사용하여 연결이 끊긴 레코드 집합을 만들 수 있습니다.
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;
}
...