XML 형식으로 레코드 유지
ADTG 형식과 마찬가지로 XML 형식의 Recordset 지속성은 Microsoft OLE DB 지속성 공급자를 사용하여 구현됩니다. 이 공급자는 ADO에서 생성된 스키마 정보를 포함하는 저장된 XML 파일 또는 스트림에서 정방향 전용 읽기 전용 행 집합을 생성합니다. 마찬가지로 ADO Recordset을 사용하고 XML을 생성한 다음, COM IStream 인터페이스를 구현하는 파일 또는 개체에 저장할 수 있습니다. (실제로 파일은 IStream을 지원하는 개체의 또 다른 예제일 뿐입니다.) 버전 2.5 이상의 경우 ADO는 MSXML(Microsoft XML 파서)을 사용하여 XML을 Recordset에 로드합니다. 따라서 msxml.dll이 필요합니다.
참고 항목
계층적 Recordsets(데이터 셰이프)를 XML 형식으로 저장할 경우 몇 가지 제한 사항이 적용됩니다. 계층적 Recordset에 보류 중인 업데이트가 포함되어 있고 매개 변수화된 계층적 Recordset을 저장할 수 없는 경우 XML에 저장할 수 없습니다. 자세한 내용은 필터링된 계층적 레코드 집합 유지를 참조하세요.
데이터를 XML에 저장하고 ADO를 통해 다시 로드하는 가장 쉬운 방법은 각각 Save 및 Open 메서드를 사용하는 것입니다. 다음 ADO 코드 예제에서는 Titles 테이블의 데이터를 titles.sav라는 파일에 저장하는 방법을 보여 줍니다.
Dim rs as new Recordset
Dim rs2 as new Recordset
Dim c as new Connection
Dim s as new Stream
' Query the Titles table.
c.Open "provider=sqloledb;data source=MySQLServer;initial catalog=pubs;Integrated Security='SSPI'"
rs.cursorlocation = adUseClient
rs.Open "select * from titles", c, adOpenStatic
' Save to the file in the XML format. Note that if you don't specify
' adPersistXML, a binary format (ADTG) will be used by default.
rs.Save "titles.sav", adPersistXML
' Save the recordset into the ADO Stream object.
rs.save s, adPersistXML
rs.Close
c.Close
set rs = nothing
' Reopen the file.
rs.Open "titles.sav",,,,adCmdFile
' Open the Stream back into a Recordset.
rs2.open s
ADO는 항상 전체 Recordset 개체를 유지합니다. Recordset 개체의 행 하위 집합을 유지하려면 Filter 메서드를 사용하여 행의 범위를 좁히거나 선택 절을 변경합니다. 그러나 행의 하위 집합을 저장하기 위해 Filter 메서드를 사용하려면 클라이언트 쪽 커서(CursorLocation = adUseClient)가 있는 Recordset 개체를 열어야 합니다. 예를 들어 문자 "b"로 시작하는 제목을 검색하려면 열려 있는 Recordset 개체에 필터를 적용할 수 있습니다.
rs.Filter "title_id like 'B*'"
rs.Save "btitles.sav", adPersistXML
ADO는 항상 클라이언트 커서 엔진 행 집합을 사용하여 지속성 공급자에 의해 생성된 정방향 전용 데이터 위에 스크롤 가능한 책갈피가 있는 Recordset 개체를 생성합니다.
이 섹션에서는 다음 항목을 다룹니다.