다음을 통해 공유


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를 통해 다시 로드하는 가장 쉬운 방법은 각각 SaveOpen 메서드를 사용하는 것입니다. 다음 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 개체를 생성합니다.

이 섹션에서는 다음 항목을 다룹니다.