정적 접근자를 사용 하려면 소비자는 사용자 레코드를 있어야 합니다. 사용자 레코드는 처리 입력 또는 출력 데이터 요소를 포함 하는 c + + 클래스입니다. ATL 개체 마법사를 사용 하는 소비자에 대 한 사용자 레코드를 생성합니다. 명령 처리 같은 선택적 작업을 위해 사용자 레코드에 메서드를 추가할 수 있습니다.
다음 코드에서는 명령을 처리 하는 샘플 레코드를 보여 줍니다. 사용자 레코드에서 BEGIN_OLUMN_MAP 는 공급자 로부터 소비자에 게 전달 된 데이터 행 집합을 나타냅니다. BEGIN_PARAM_MAP 명령 매개 변수 집합을 나타냅니다. 이 예제에서는 CCommand 클래스를 사용 하 여 명령 매개 변수를 처리 합니다. 지도 항목에서 데이터 멤버는 클래스의 각 인스턴스에 대 한 메모리의 한 연속 블록에 오프셋을 나타냅니다. COLUMN_ENTRY 매크로 공급자 측에 PROVIDER_COLUMN_ENTRY 매크로에 해당。
COLUMN_MAP 및 PARAM_MAP 매크로에 자세한 내용은 OLE DB 소비자 템플릿의 매크로 참조 하십시오.
클래스 CArtists
{
공개:
/ / 데이터 요소
CHAR m_szFirstName [20];
CHAR m_szLastName [30];
짧은 m_nAge;
/ / 출력 바인딩 지도
BEGIN_COLUMN_MAP(CArtists)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
COLUMN_ENTRY (3, m_nAge)
END_COLUMN_MAP()
/ / 매개 변수 바인딩 지도
BEGIN_PARAM_MAP(CArtists)
COLUMN_ENTRY (1, m_nAge)
END_PARAM_MAP
}
다음 예제에서는 행 집합에서 여러 접근자를 지원 하도록 수정 된 사용자 레코드를 보여 줍니다. BEGIN_COLUMN_MAP 및 END_COLUMN_MAP대신 사용 BEGIN_ACCESSOR_MAP 및 BEGIN_ACCESSOR 각 접근자에 대 한 합니다. BEGIN_ACCESSOR 매크로 접근자 번호 (0 으로부터의 오프셋) 및 접근자의 한 접근자 인지 여부를 지정 합니다. 자동으로 MoveNext를 호출에서 데이터를 검색 하려면 GetData 를 호출 하는 Autoaccessors. 비-자동 접근자를 사용 하려면 명시적으로 데이터를 검색 해야 합니다. 않을 수 있습니다 검색을 모든 레코드에 대 한 (비트맵 이미지)와 같은 큰 데이터 필드에 바인딩하는 경우에 자동이 아닌 접근자를 사용 하 여。
cMultiArtists 클래스
{
공개:
/ / 데이터 요소
CHAR m_szFirstName [20];
CHAR m_szLastName [30];
짧은 m_nAge;
/ / 출력 바인딩 지도
BEGIN_ACCESSOR_MAP (CMultiArtists, 2)
BEGIN_ACCESSOR (0, true)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
END_ACCESSOR()
BEGIN_ACCESSOR (1, false) / / 아닙니다 자동 접근자
COLUMN_ENTRY (3, m_nAge)
END_ACCESSOR()
END_ACCESSOR_MAP()
}