다음을 통해 공유


CXMLAccessor 클래스

데이터 저장소의 스키마(기본 구조)에 대한 지식이 없는 경우 데이터 원본을 문자열 데이터로 액세스할 수 있습니다.

구문

class CXMLAccessor : public CDynamicStringAccessorW

요구 사항

헤더: atldbcli.h

멤버

메서드

속성 설명
GetXMLColumnData 열 정보를 검색합니다.
GetXMLRowData 테이블의 전체 내용을 행별로 검색합니다.

설명

그러나 CXMLAccessor 데이터 저장소에서 액세스하는 모든 데이터를 XML 형식(태그 지정) 데이터로 변환한다는 점에서는 다릅니다 CDynamicStringAccessorW . 이는 XML 인식 웹 페이지로 출력하는 데 특히 유용합니다. XML 태그 이름은 데이터 저장소의 열 이름과 최대한 가깝게 일치합니다.

메서드를 사용하여 CDynamicAccessor 열 정보를 가져옵니다. 이 열 정보를 사용하여 런타임에 동적으로 접근자를 만듭니다.

열 정보는 이 클래스에서 만들고 관리하는 버퍼에 저장됩니다. GetXMLColumnData를 사용하여 열 정보를 가져오거나 GetXMLRowData를 사용하여 행별로 열 데이터를 가져옵니다.

예시

void DoCXMLAccessorTest()
{
   HRESULT hr = CoInitialize(NULL);

   CDataSource ds;
   CSession ss;

   CTable<CXMLAccessor> rs;

   // The following is an example initialization string:
   hr = ds.OpenFromInitializationString(L"Provider=Microsoft.Jet.OLEDB.4.0;"
      L"User ID=Admin;Data Source=Snippet.mdb;Mode=Share Deny None;"
      L"Extended Properties=\"\";Jet OLEDB:System database=\"\";"
      L"Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";"
      L"Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;"
      L"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;"
      L"Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;"
      L"Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;"
      L"Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False");

   hr = ss.Open(ds);
   hr = rs.Open(ss, L"Customer"); // Customer is a table name in the database.

   CStringW strColumnInfo;
   rs.GetXMLColumnData(strColumnInfo);
   wprintf_s(L"%s\n", strColumnInfo);

   hr = rs.MoveFirst();
   while(SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET)
   {
      CStringW strRowData;
      rs.GetXMLRowData(strRowData);
      wprintf_s(L"%s\n", strRowData);
      hr = rs.MoveNext();
   }

   ss.Close();
   ds.Close();
   CoUninitialize();
}

CXMLAccessor::GetXMLColumnData

테이블의 열 형식 정보를 열별로 XML 형식 문자열 데이터로 검색합니다.

구문

HRESULT GetXMLColumnData(CSimpleStringW& strOutput) throw();

매개 변수

strOutput
[out] 검색할 열 형식 정보를 포함하는 문자열 버퍼에 대한 참조입니다. 문자열은 데이터 저장소의 열 이름과 일치하는 XML 태그 이름으로 서식이 지정됩니다.

Return Value

표준 HRESULT 값 중 하나입니다.

설명

다음은 XML에서 열 형식 정보의 형식을 지정하는 방법을 보여줍니다. type 는 열의 데이터 형식을 지정합니다. 데이터 형식은 액세스 중인 데이터베이스가 아닌 OLE DB 데이터 형식을 기반으로 합니다.

<columninfo>

<column type = I2/> ColumnName

</columninfo>

CXMLAccessor::GetXMLRowData

테이블의 전체 내용을 XML 형식 문자열 데이터로 행별로 검색합니다.

구문

HRESULT GetXMLRowData(CSimpleStringW& strOutput,
   bool bAppend = false) throw();

매개 변수

strOutput
[out] 검색할 테이블 데이터가 포함된 버퍼에 대한 참조입니다. 데이터는 데이터 저장소의 열 이름과 일치하는 XML 태그 이름을 가진 문자열 데이터로 형식이 지정됩니다.

bAppend
[in] 출력 데이터의 끝에 문자열을 추가할지 여부를 지정하는 부울 값입니다.

Return Value

표준 HRESULT 값 중 하나입니다.

설명

다음은 행 데이터의 형식을 XML로 지정하는 방법을 보여줍니다. DATA 아래는 행 데이터를 나타냅니다. 이동 메서드를 사용하여 원하는 행으로 이동합니다.

<row>

<column name>DATA</column name>

</row>

참고 항목

OLE DB 소비자 템플릿
OLE DB 소비자 템플릿 참조
CAccessor 클래스
CDynamicAccessor 클래스
CDynamicParameterAccessor 클래스
CDynamicStringAccessor Class
CDynamicStringAccessorA 클래스
CDynamicStringAccessorW 클래스
CManualAccessor 클래스