共用方式為


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的用戶類別。

Storage
用戶記錄類別。

CreatorClass
包含數據列集屬性的類別;通常是 命令。

ArrayType
做為數據列集數據的記憶體的類別。 此參數預設為 CAtlArray,但它可以是任何支援必要功能的類別。

需求

Header: atldb.h

成員

方法

名稱 描述
NameFromDBID DBID 擷取字串,並將它複製到傳入的 bstr
SetCommandText 驗證並儲存 DBID在兩個字串中 (m_strCommandTextm_strIndexText)。

可覆寫的方法

名稱 描述
GetColumnInfo 擷取特定用戶端要求的數據行資訊。
GetCommandFromID 檢查兩個參數是否包含字串值,如果是,請將字串值複製到數據成員 m_strCommandTextm_strIndexText
ValidateCommandID 檢查是否或兩者都包含 DBID字串值,如果是的話,請將它們複製到其數據成員 m_strCommandTextm_strIndexText

資料成員

名稱 描述
m_rgRowData 根據預設, CAtlArray 在使用者記錄樣本自變數上,範本化為 CRowsetImpl的 。 將樣板自變數變更 ArrayTypeCRowsetImpl,即可使用另一個數位類型類別。
m_strCommandText 包含數據列集的初始命令。
m_strIndexText 包含數據列集的初始索引。

備註

CRowsetImpl 會以靜態向上廣播的形式提供覆寫。 方法會控制指定數據列集驗證命令文字的方式。 您可以建立自己的 CRowsetImpl樣式類別,方法是讓實作介面多重繼承。 您必須提供實 Execute作的唯一方法是 。 根據您要建立的數據列集類型而定,建立者方法會預期會有 Execute不同的簽章。 例如,如果您使用 CRowsetImpl衍生類別來實作架構數據列集,則 Execute 方法會有下列簽章:

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

如果您要建立 CRowsetImpl衍生類別來實作命令或會話的數據列集,方法 Execute 將具有下列簽章:

HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)

若要實作任何 CRowsetImpl衍生 Execute 的方法,您必須填入內部數據緩衝區(m_rgRowData)。

CRowsetImpl::NameFromDBID

DBID 擷取字串,並將它複製到傳入的 bstr

語法

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

參數

pDBID
[in]要從中擷取字串的指標 DBID

bstr
[in]要放置字串複本的 DBID CComBSTR 參考。

bIndex
[in] true 如果索引 DBID為 ,則為 ; false 如果資料表 DBID為 ,則為 。

傳回值

標準 HRESULT。 根據 DBID 是數據表或索引(以 bIndex 表示),方法會傳回DB_E_NOINDEX或DB_E_NOTABLE。

備註

這個方法是由 CRowsetImpl ValidateCommandIDGetCommandFromID 的實作所呼叫。

CRowsetImpl::SetCommandText

驗證並儲存 DBID在兩個字串中 (m_strCommandTextm_strIndexText)。

語法

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

參數

pTableID
[in]表示數據表標識碼的指標 DBID

pIndexID
[in]表示索引標識碼的指標 DBID

傳回值

標準 HRESULT。

備註

方法 SetCommentTextCreateRowset呼叫,這是的 IOpenRowsetImpl靜態範本化方法。

這個方法會透過向上轉換的指標呼叫 ValidateCommandIDGetCommandFromID 來委派其工作。

CRowsetImpl::GetColumnInfo

擷取特定用戶端要求的數據行資訊。

語法

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

參數

光伏
[in]使用者衍生類別的 CRowsetImpl 指標。

pcCols
[in]傳回之數據行數目的指標(輸出)。

傳回值

靜態 ATLCOLUMNINFO 結構的指標。

備註

此方法是進階覆寫。

這個方法是由數個基底實作類別呼叫,以擷取特定用戶端要求的數據行資訊。 通常,此方法會由 IColumnsInfoImpl呼叫。 如果您覆寫此方法,您必須將 方法的版本放在衍生類別中 CRowsetImpl。 因為方法可能放在非範本化類別中,您必須將 pv 變更為適當的CRowsetImpl衍生類別。

下列範例示範 GetColumnInfo 使用方式。 在此範例中, CMyRowsetCRowsetImpl衍生類別。 若要覆寫 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_strCommandTextm_strIndexText

語法

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

參數

pTableID
[in]表示數據表標識碼之的指標 DBID

pIndexID
[in]表示索引標識碼的指標 DBID

傳回值

標準 HRESULT。

備註

這個方法會透過 靜態向上廣播 CRowsetImpl 呼叫,以填入數據成員 m_strCommandTextm_strIndexText。 根據預設,此方法會檢查其中一個或兩個參數是否包含字串值。 如果它們包含字串值,這個方法會將字串值複製到數據成員。 藉由將具有這個簽章的方法放在衍生類別中 CRowsetImpl,系統會呼叫方法,而不是基底實作。

CRowsetImpl::ValidateCommandID

檢查是否或兩者都包含 DBID字串值,如果是的話,請將它們複製到其數據成員 m_strCommandTextm_strIndexText

語法

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

參數

pTableID
[in]表示數據表標識碼的指標 DBID

pIndexID
[in]表示索引標識碼的指標 DBID

傳回值

標準 HRESULT。

備註

這個方法會透過 靜態向上廣播 CRowsetImpl 呼叫,以填入其數據成員 m_strCommandTextm_strIndexText。 根據預設,這個方法會檢查是否或兩者都包含 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;