다음을 통해 공유


CRowsetImpl 클래스

여러 구현 인터페이스의 여러 상속을 요구하지 않고 표준 OLE DB 행 집합 구현을 제공합니다.

구문

template <
   class T,
   class Storage,
   class CreatorClass,
   class ArrayType = CAtlArray<Storage>,
   class RowClass = CSimpleRow,
   class RowsetInterface = IRowsetImpl <T, IRowset>
>
class CRowsetImpl :
   public CComObjectRootEx<CreatorClass::_ThreadModel>,
   public CRowsetBaseImpl<T, Storage, ArrayType, RowsetInterface>,
   public IRowsetInfoImpl<T, CreatorClass::_PropClass>

매개 변수

T
에서 CRowsetImpl파생되는 사용자의 클래스입니다.

스토리지
사용자 레코드 클래스입니다.

CreatorClass
행 집합에 대한 속성을 포함하는 클래스입니다. 일반적으로 명령입니다.

ArrayType
행 집합의 데이터에 대한 스토리지 역할을 하는 클래스입니다. 이 매개 변수는 기본적으로 사용되지 CAtlArray만 필요한 기능을 지원하는 모든 클래스일 수 있습니다.

요구 사항

헤더: atldb.h

멤버

메서드

속성 설명
NameFromDBID A에서 문자열을 DBID 추출하고 전달된 bstr복사합니다.
SetCommandText 두 문자열(m_strCommandText 및 m_strIndexText)에 s의 유효성을 검사하고 저장DBID합니다.

재정의 가능한 메서드

속성 설명
GetColumnInfo 특정 클라이언트 요청에 대한 열 정보를 검색합니다.
GetCommandFromID 매개 변수 중 하나 또는 둘 다에 문자열 값이 포함되어 있는지 확인하고, 있는 경우 문자열 값을 m_strCommandText 데이터 멤버에 복사하고 m_strIndexText.
ValidateCommandID 둘 중 하나 또는 둘 다 DBID문자열 값이 포함되어 있는지 확인하고, 있는 경우 m_strCommandText 데이터 멤버에 복사하고 m_strIndexText.

데이터 멤버

속성 설명
m_rgRowData 기본적으로 해당 템플릿은 CAtlArray 사용자 레코드 템플릿 인수 CRowsetImpl에서 .로 템플릿을 만듭니다. 템플릿 인수CRowsetImpl를 .로 변경하여 다른 배열 형식 클래스를 ArrayType 사용할 수 있습니다.
m_strCommandText 행 집합의 초기 명령을 포함합니다.
m_strIndexText 행 집합의 초기 인덱스를 포함합니다.

설명

CRowsetImpl 는 정적 업캐스트 형식의 재정의를 제공합니다. 메서드는 지정된 행 집합이 명령 텍스트의 유효성을 검사하는 방식을 제어합니다. 구현 인터페이스를 다중 상속으로 만들어 고유한 CRowsetImpl스타일 클래스를 만들 수 있습니다. 구현을 제공해야 하는 유일한 방법은 .입니다 Execute. 만드는 행 집합의 유형에 따라 작성자 메서드는 서로 다른 서명을 예상합니다 Execute. 예를 들어 -derived 클래스를 CRowsetImpl사용하여 스키마 행 집합을 구현하는 경우 메서드에 Execute 다음 서명이 있습니다.

HRESULT Execute(LONG* pcRows, ULONG cRestrictions, const VARIANT* rgRestrictions)

명령 또는 세션의 행 집합 Execute 을 구현하기 위해 파생 클래스를 만드는 CRowsetImpl경우 메서드에 다음 서명이 있습니다.

HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)

파생 메서드를 CRowsetImpl구현하려면 내부 데이터 버퍼(m_rgRowData)를 채워야 Execute 합니다.

CRowsetImpl::NameFromDBID

A에서 문자열을 DBID 추출하고 전달된 bstr복사합니다.

구문

HRESULT CRowsetBaseImpl::NameFromDBID(DBID* pDBID,
   CComBSTR& bstr,
   bool bIndex);

매개 변수

pDBID
[in] 문자열을 DBID 추출할 포인터입니다.

bstr
[in] 문자열의 DBID 복사본을 배치하는 CComBSTR 참조입니다.

bIndex
[in] true 인덱 DBID스이면 < false a0/&A, 테이블 DBID이면

Return Value

표준 HRESULT입니다. 테이블인지 인덱스인지(DBIDbIndex로 나타냄)에 따라 메서드는 DB_E_NOINDEX 반환하거나 DB_E_NOTABLE.

설명

이 메서드는 ValidateCommandIDGetCommandFromID의 구현에 의해 CRowsetImpl 호출됩니다.

CRowsetImpl::SetCommandText

두 문자열(m_strCommandText 및 m_strIndexText)에 s의 유효성을 검사하고 저장DBID합니다.

구문

HRESULT CRowsetBaseImpl::SetCommandText(DBID* pTableID,
   DBID* pIndexID);

매개 변수

pTableID
[in] 테이블 ID를 DBID 나타내는 포인터입니다.

pIndexID
[in] 인덱스 ID를 DBID 나타내는 포인터입니다.

Return Value

표준 HRESULT입니다.

설명

메서드는 SetCommentText 정적 템플릿화된 메서드IOpenRowsetImpl인 에 의해 CreateRowset호출됩니다.

이 메서드는 업캐스트된 포인터를 통해 ValidateCommandIDGetCommandFromID를 호출하여 해당 작업을 위임합니다.

CRowsetImpl::GetColumnInfo

특정 클라이언트 요청에 대한 열 정보를 검색합니다.

구문

static ATLCOLUMNINFO* CRowsetBaseImpl::GetColumnInfo(T* pv,
   ULONG* pcCols);

매개 변수

pv
[in] 사용자의 파생 클래스에 대한 포인터입니다 CRowsetImpl .

pcCols
[in] 반환된 열 수에 대한 포인터(출력)입니다.

Return Value

정적 ATLCOLUMNINFO 구조체에 대한 포인터입니다.

설명

이 메서드는 고급 재정의입니다.

이 메서드는 특정 클라이언트 요청에 대한 열 정보를 검색하기 위해 여러 기본 구현 클래스에서 호출됩니다. 일반적으로 이 메서드는 .에 의해 IColumnsInfoImpl호출됩니다. 이 메서드를 재정의하는 경우 -derived 클래스에 CRowsetImpl메서드 버전을 배치해야 합니다. 메서드는 템플릿이 지정되지 않은 클래스에 배치될 수 있으므로 pv를 적절한 CRowsetImpl파생 클래스로 변경해야 합니다.

다음 예제에서는 사용량을 보여 줍니다 GetColumnInfo . 이 예제에서는 CMyRowset -derived 클래스입니다 CRowsetImpl. 이 클래스의 모든 인스턴스를 재정 GetColumnInfo 의하려면 클래스 정의에 다음 메서드를 CMyRowset 배치합니다.

static ATLCOLUMNINFO* GetColumnInfo(CCustomRowset* pRowset, DBORDINAL* pcCols)
{
   // Add your implementation here and/or call the base class

   return CRowsetImpl::GetColumnInfo(pRowset, pcCols);
}

CRowsetImpl::GetCommandFromID

매개 변수 중 하나 또는 둘 다에 문자열 값이 포함되어 있는지 확인하고, 있는 경우 문자열 값을 m_strCommandText 데이터 멤버에 복사하고 m_strIndexText.

구문

HRESULT CRowsetBaseImpl::GetCommandFromID(DBID* pTableID,
   DBID* pIndexID);

매개 변수

pTableID
[in] 표 ID를 DBID 나타내는 포인터입니다.

pIndexID
[in] 인덱스 ID를 DBID 나타내는 포인터입니다.

Return Value

표준 HRESULT입니다.

설명

이 메서드는 m_strCommandText 데이터 멤버채우고 m_strIndexText 정적 업캐스트 CRowsetImpl 를 통해 호출됩니다. 기본적으로 이 메서드는 매개 변수 중 하나 또는 둘 다에 문자열 값이 포함되어 있는지 확인합니다. 문자열 값이 포함된 경우 이 메서드는 문자열 값을 데이터 멤버에 복사합니다. 이 시그니처가 있는 메서드를 파생 클래스에 CRowsetImpl배치하면 기본 구현 대신 메서드가 호출됩니다.

CRowsetImpl::ValidateCommandID

둘 중 하나 또는 둘 다 DBID문자열 값이 포함되어 있는지 확인하고, 있는 경우 m_strCommandText 데이터 멤버에 복사하고 m_strIndexText.

구문

HRESULT CRowsetBaseImpl::ValidateCommandID(DBID* pTableID,
   DBID* pIndexID);

매개 변수

pTableID
[in] 테이블 ID를 DBID 나타내는 포인터입니다.

pIndexID
[in] 인덱스 ID를 DBID 나타내는 포인터입니다.

Return Value

표준 HRESULT입니다.

설명

이 메서드는 m_strCommandText 및 m_strIndexText 데이터 멤버를 채우기 위해 정적 업캐스트 CRowsetImpl 를 통해 호출됩니다. 기본적으로 이 메서드는 문자열 값 중 하나 또는 둘 다 DBID에 문자열 값이 포함되어 있는지 확인하고 있는 경우 해당 데이터 멤버에 복사합니다. 이 시그니처가 있는 메서드를 파생 클래스에 CRowsetImpl배치하면 기본 구현 대신 메서드가 호출됩니다.

CRowsetImpl::m_rgRowData

기본적으로 해당 템플릿은 CAtlArray 사용자 레코드 템플릿 인수 CRowsetImpl에서 .로 템플릿을 만듭니다.

구문

ArrayType CRowsetBaseImpl::m_rgRowData;

설명

ArrayType 은 .에 대한 템플릿 매개 변수입니다 CRowsetImpl.

CRowsetImpl::m_strCommandText

행 집합의 초기 명령을 포함합니다.

구문

CComBSTR CRowsetBaseImpl::m_strCommandText;

CRowsetImpl::m_strIndexText

행 집합의 초기 인덱스를 포함합니다.

구문

CComBSTR CRowsetBaseImpl::m_strIndexText;