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입니다. 테이블인지 인덱스인지(DBID
bIndex로 나타냄)에 따라 메서드는 DB_E_NOINDEX 반환하거나 DB_E_NOTABLE.
설명
이 메서드는 ValidateCommandID 및 GetCommandFromID의 구현에 의해 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
호출됩니다.
이 메서드는 업캐스트된 포인터를 통해 ValidateCommandID 및 GetCommandFromID를 호출하여 해당 작업을 위임합니다.
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;