OLE DB 공급자 템플릿 구조

데이터 소스 및 세션

OLE DB 공급자 구조에는 데이터 소스 개체 하나와 세션이 하나 이상 포함됩니다. 데이터 소스 개체는 모든 공급자가 인스턴스화해야 하는 초기 개체입니다. 소비자 응용 프로그램에서는 데이터가 필요한 경우 공동으로 데이터 소스 개체를 만들어 공급자를 시작합니다. 데이터 소스 개체는 IDBCreateSession 인터페이스를 사용하여 세션 개체를 만들고, 소비자는 이 세션 개체를 통해 데이터 소스 개체에 연결합니다. ODBC 프로그래머는 데이터 소스 개체를 HENV에 해당하는 요소로, 세션 개체는 HDBC에 해당하는 요소로 생각하면 됩니다.

공급자 아키텍처 그래픽

OLE DB 템플릿은 ATL OLE DB 공급자 마법사가 만든 소스 파일과 함께 데이터 소스 개체를 구현합니다. 세션은 OLE DB TSession에 해당하는 개체입니다.

필수 인터페이스 및 선택적 인터페이스

OLE DB 공급자 템플릿은 모든 필수 인터페이스에 대해 미리 패키지된 구현을 제공합니다. OLE DB는 필수 인터페이스 및 선택적 인터페이스를 다음과 같은 몇 가지 개체 유형으로 정의합니다.

OLE DB 공급자 템플릿은 행 개체와 저장소 개체를 구현하지 않습니다.

다음 표에서는 OLE DB 2.6 SDK Documentation에 따라 위에 나열된 개체에 대한 필수 인터페이스와 선택적 인터페이스를 보여 줍니다.

구성 요소

Interface

주석

데이터 소스(CDataSource)

[mandatory] IDBCreateSession

[mandatory] IDBInitialize

[mandatory] IDBProperties

[mandatory] IPersist

[optional] IConnectionPointContainer

[optional] IDBAsynchStatus

[optional] IDBDataSourceAdmin

[optional] IDBInfo

[optional] IPersistFile

[optional] ISupportErrorInfo

소비자에서 공급자로 연결. 이 개체는 사용자 ID, 암호 및 데이터 소스 이름과 같은 연결 속성을 지정하는 데 사용됩니다. 테이블을 만들거나, 업데이트하거나, 삭제하는 등 데이터 소스를 관리하는 데도 사용됩니다.

세션(CSession)

[mandatory] IGetDataSource

[mandatory] IOpenRowset

[mandatory] ISessionProperties

[optional] IAlterIndex

[optional] IAlterTable

[optional] IBindResource

[optional] ICreateRow

[optional] IDBCreateCommand

[optional] IDBSchemaRowset

[optional] IIndexDefinition

[optional] ISupportErrorInfo

[optional] ITableCreation

[optional] ITableDefinition

[optional] ITableDefinitionWithConstraints

[optional] ITransaction

[optional] ITransactionJoin

[optional] ITransactionLocal

[optional] ITransactionObject

세션 개체는 소비자와 공급자 사이에 이루어진 한 번의 대화를 나타냅니다. 동시에 여러 개의 세션이 활성화될 수 있다는 점에서 ODBC HSTMT와 비슷합니다.

세션 개체는 OLE DB 기능에 액세스하는 기본 연결입니다. 명령이나 트랜잭션 또는 행 집합 개체에 액세스하려면 세션 개체를 통과해야 합니다.

행 집합(CRowset)

[mandatory] IAccessor

[mandatory] IColumnsInfo

[mandatory] IConvertType

[mandatory] IRowset

[mandatory] IRowsetInfo

[optional] IChapteredRowset

[optional] IColumnsInfo2

[optional] IColumnsRowset

[optional] IConnectionPointContainer

[optional] IDBAsynchStatus

[optional] IGetRow

[optional] IRowsetChange

[optional] IRowsetChapterMember

[optional] IRowsetCurrentIndex

[optional] IRowsetFind

[optional] IRowsetIdentity

[optional] IRowsetIndex

[optional] IRowsetLocate

[optional] IRowsetRefresh

[optional] IRowsetScroll

[optional] IRowsetUpdate

[optional] IRowsetView

[optional] ISupportErrorInfo

[optional] IRowsetBookmark

행 집합 개체는 데이터 소스의 데이터를 나타냅니다. 이 개체는 데이터 소스의 데이터 및 데이터에 대한 기본 작업(업데이트, 페치, 이동 등)을 바인딩해야 합니다. 데이터를 포함하고 조작하기 위한 행 집합 개체는 항상 있습니다.

명령(CCommand)

[mandatory] IAccessor

[mandatory] IColumnsInfo

[mandatory] ICommand

[mandatory] ICommandProperties

[mandatory] ICommandText

[mandatory] IConvertType

[optional] IColumnsRowset

[optional] ICommandPersist

[optional] ICommandPrepare

[optional] ICommandWithParameters

[optional] ISupportErrorInfo

[optional] ICommandStream

명령 개체는 쿼리 등과 같이 데이터에 대한 작업을 처리합니다. 매개 변수가 있거나 매개 변수가 없는 명령문을 처리할 수 있습니다.

또한 명령 개체는 매개 변수와 출력 열에 대한 바인딩 처리 작업을 담당합니다. 바인딩은 행 집합에서의 열 검색 방법에 대한 정보가 포함된 구조입니다. 서수, 데이터 형식, 길이, 상태 등의 정보가 포함됩니다.

트랜잭션(선택적 요소)

[mandatory] IConnectionPointContainer

[mandatory] ITransaction

[optional] ISupportErrorInfo

트랜잭션 개체는 데이터 소스에 대한 작업의 원자 단위를 정의하고 이러한 작업 단위가 서로 연관되는 방법을 결정합니다. 이 개체는 OLE DB 공급자 템플릿이 직접 지원하지 않으므로 사용자가 직접 만들어야 합니다.

자세한 내용은 다음 항목을 참조하십시오.

참고 항목

참조

OLE DB Interfaces

개념

OLE DB 공급자 템플릿(C++)