다음을 통해 공유


XML 데이터 액세스

데이터 원본에서 XML 데이터를 검색하는 두 가지 방법이 있습니다. 하나는 CStreamRowset을 사용하고 다른 하나는 CXMLAccessor를 사용합니다.

기능 CStreamRowset CXMLAccessor
전송된 데이터 양 모든 열과 행에서 데이터를 한 번에 검색합니다. 한 번에 하나의 행만 제외한 모든 열에서 데이터를 검색합니다. 와 같은 MoveNext메서드를 사용하여 행을 탐색해야 합니다.
문자열 서식 지정 SQL Server는 XML 문자열의 서식을 지정하고 소비자에게 보냅니다. 행 집합 데이터를 네이티브 형식(공급자가 유니코드 문자열로 보내도록 요청)으로 검색한 다음 XML 형식으로 데이터를 포함하는 문자열을 작성합니다.
서식 제어 일부 SQL Server 2000 관련 속성을 설정하여 XML 문자열의 형식을 지정하는 방법을 어느 정도 제어할 수 있습니다. 생성된 XML 문자열의 형식을 제어할 수 없습니다.

CStreamRowset XML 형식으로 데이터를 검색하는 보다 효율적인 방법을 제공하지만 SQL Server 2000에서만 지원됩니다.

CStreamRowset을 사용하여 XML 데이터 검색

CStreamRowset을 사용자 또는 CTable 선언의 행 집합 형식으로 지정합니다CCommand. 사용자 고유의 접근자 또는 접근자 없이 사용할 수 있습니다. 예를 들면 다음과 같습니다.

CCommand<CAccessor<CMyAccessor>, CStreamRowset> myCmd;

또는

CCommand<CNoAccessor, CStreamRowset> myCmd;

일반적으로 호출 CCommand::Open 할 때(예 CRowset : 클래스로 TRowset 지정) 포인터를 IRowset 가져옵니다. ICommand::ExecuteIRowset 는 개체의 멤버에 저장된 포인터를 m_spRowset 반환합니다CRowset. 와 같은 MoveFirstMoveNext메서드를 사용하고 GetData 해당 포인터를 사용하여 데이터를 검색합니다.

반대로 호출 CCommand::Open 할 때(클래스로 TRowset 지정CStreamRowset) ICommand::Execute CStreamRowset데이터 멤버에 저장된 포인터를 m_spStream 반환 ISequentialStream 합니다. 그런 다음 이 메서드를 Read 사용하여 XML 형식으로 (유니코드 문자열) 데이터를 검색합니다. 예시:

myCmd.m_spStream->Read()

SQL Server 2000은 XML 서식을 지정하고 모든 열과 행 집합의 모든 행을 하나의 XML 문자열로 반환합니다.

이 메서드를 사용하는 예제는 Read 단순 소비자 구현에서 소비자XML 지원 추가를 참조하세요.

참고 항목

XML 지원은 CStreamRowset SQL Server 2000에서만 작동하며 OLE DB Provider for SQL Server 2000(MDAC와 함께 설치됨)이 있어야 합니다.

CXMLAccessor를 사용하여 XML 데이터 검색

CXMLAccessor 를 사용하면 데이터 저장소의 스키마에 대한 지식이 없는 경우 데이터 원본의 데이터에 문자열 데이터로 액세스할 수 있습니다. CXMLAccessor 는 전자가 데이터 저장소에서 액세스한 모든 데이터를 XML 형식(태그가 지정된) 데이터로 변환한다는 점을 제외하면 작동 CDynamicStringAccessorW 합니다. XML 태그 이름은 데이터 저장소의 열 이름과 가능한 한 밀접하게 일치합니다.

다른 접근자 클래스와 마찬가지로 템플릿 CXMLAccessor 매개 변수로 전달하거나 CTable다음을 수행합니다CCommand.

CTable<CXMLAccessor, CRowset> rs;

GetXMLRowData를 사용하여 테이블의 데이터를 한 번에 한 행씩 검색하고 다음과 같은 MoveNext메서드를 사용하여 행을 탐색합니다.

// Open data source, session, and rowset
hr = rs.MoveFirst();

while(SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET )
{
    CStringW strRowData;
    myCmd.GetXMLRowData(strRowData);

    printf_s( "%S\n", strRowData );

    hr = rs.MoveNext();
}

GetXMLColumnData를 사용하여 열(데이터 형식) 정보를 XML 형식 문자열 데이터로 검색할 수 있습니다.

참고 항목

접근자 사용