접근자 및 행 집합

데이터를 설정하고 검색하기 위해 OLE DB 템플릿에서는 CAccessorRowset 클래스를 통해 접근자와 행 집합을 사용합니다. 이 클래스는 서로 다른 형식의 여러 접근자를 처리할 수 있습니다.

접근자 형식

모든 접근자는 CAccessorBase에서 파생됩니다. CAccessorBase는 매개 변수와 열 바인딩을 모두 제공합니다.

다음 그림은 접근자 형식에 대한 것입니다.

접근자 클래스

접근자 형식

  • CAccessor   이 접근자는 디자인 타임에 데이터베이스 소스의 구조를 알고 있는 경우에 사용합니다. CAccessor는 버퍼가 포함된 데이터베이스 레코드를 데이터 소스에 정적으로 바인딩합니다.

  • CDynamicAccessor   이 접근자는 디자인 타임에 데이터베이스의 구조를 알지 못하는 경우에 사용합니다. CDynamicAccessorIColumnsInfo::GetColumnInfo를 호출하여 데이터베이스 열 정보를 가져옵니다. 이 접근자는 접근자와 버퍼를 만들고 관리합니다.

  • CDynamicParameterAccessor   알 수 없는 명령 형식을 처리하려면 이 접근자를 사용합니다. 명령을 준비할 때, 공급자가 ICommandWithParameters를 지원하는 경우 CDynamicParameterAccessorICommandWithParameters 인터페이스에서 매개 변수 정보를 가져올 수 있습니다.

  • CDynamicStringAccessor, CDynamicStringAccessorA, and CDynamicStringAccessorW   이 클래스는 데이터베이스 스키마에 대해 알지 못하는 경우에 사용합니다. CDynamicStringAccessorA는 데이터를 ANSI 문자열로 검색하고 CDynamicStringAccessorW는 데이터를 유니코드 문자열로 검색합니다.

  • CManualAccessor   이 클래스를 사용하면 공급자가 형식을 변환할 수 있는 경우 모든 데이터 형식을 사용할 수 있습니다. 이 클래스는 결과 열과 명령 매개 변수 모두를 처리합니다.

다음 표에는 OLE DB 템플릿 접근자 형식에서 지원되는 내용이 요약되어 있습니다.

접근자 형식

Dynamic

매개 변수 처리

버퍼

여러 접근자

CAccessor

아니요

사용자

CDynamicAccessor

아니요

OLE DB 템플릿

아니요

CDynamicParameterAccessor

OLE DB 템플릿

아니요

CDynamicStringAccessor[A,W]

아니요

OLE DB 템플릿

아니요

CManualAccessor

사용자

행 집합 형식

OLE DB 템플릿은 단일 행 집합(CRowset에 의해 구현), 대량 행 집합(CBulkRowset에 의해 구현) 및 배열 행 집합(CArrayRowset에 의해 구현)이라는 세 가지 종류의 행 집합을 지원합니다(이전 그림 참조). 단일 행 집합은 MoveNext가 호출될 때 단일 행 핸들을 페치합니다. 대량 행 집합은 여러 행 핸들을 페치할 수 있습니다. 배열 행 집합은 배열 구문을 사용하여 액세스할 수 있는 행 집합입니다.

다음 그림은 행 집합 형식을 보여 줍니다.

행 집합 클래스

RowsetType 그래픽

스키마 행 집합은 데이터 저장소의 데이터에 액세스하지 않지만, 대신 데이터 저장소에 대한 정보(메타데이터)에 액세스합니다. 스키마 행 집합은 일반적으로 컴파일 타임에 데이터베이스 구조를 알 수 없지만 런타임에 이를 가져와야 하는 경우에 사용됩니다.

참고 항목

개념

OLE DB 소비자 템플릿(C++)