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_strCommandText 和 m_strIndexText)。 |
可覆寫的方法
名稱 | 描述 |
---|---|
GetColumnInfo | 擷取特定用戶端要求的數據行資訊。 |
GetCommandFromID | 檢查兩個參數是否包含字串值,如果是,請將字串值複製到數據成員 m_strCommandText 和 m_strIndexText。 |
ValidateCommandID | 檢查是否或兩者都包含 DBID 字串值,如果是的話,請將它們複製到其數據成員 m_strCommandText 和 m_strIndexText。 |
資料成員
名稱 | 描述 |
---|---|
m_rgRowData | 根據預設, CAtlArray 在使用者記錄樣本自變數上,範本化為 CRowsetImpl 的 。 將樣板自變數變更 ArrayType 為 CRowsetImpl ,即可使用另一個數位類型類別。 |
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
ValidateCommandID 和 GetCommandFromID 的實作所呼叫。
CRowsetImpl::SetCommandText
驗證並儲存 DBID
在兩個字串中 (m_strCommandText 和 m_strIndexText)。
語法
HRESULT CRowsetBaseImpl::SetCommandText(DBID* pTableID,
DBID* pIndexID);
參數
pTableID
[in]表示數據表標識碼的指標 DBID
。
pIndexID
[in]表示索引標識碼的指標 DBID
。
傳回值
標準 HRESULT。
備註
方法 SetCommentText
由 CreateRowset
呼叫,這是的 IOpenRowsetImpl
靜態範本化方法。
這個方法會透過向上轉換的指標呼叫 ValidateCommandID 和 GetCommandFromID 來委派其工作。
CRowsetImpl::GetColumnInfo
擷取特定用戶端要求的數據行資訊。
語法
static ATLCOLUMNINFO* CRowsetBaseImpl::GetColumnInfo(T* pv,
ULONG* pcCols);
參數
光伏
[in]使用者衍生類別的 CRowsetImpl
指標。
pcCols
[in]傳回之數據行數目的指標(輸出)。
傳回值
靜態 ATLCOLUMNINFO
結構的指標。
備註
此方法是進階覆寫。
這個方法是由數個基底實作類別呼叫,以擷取特定用戶端要求的數據行資訊。 通常,此方法會由 IColumnsInfoImpl
呼叫。 如果您覆寫此方法,您必須將 方法的版本放在衍生類別中 CRowsetImpl
。 因為方法可能放在非範本化類別中,您必須將 pv 變更為適當的CRowsetImpl
衍生類別。
下列範例示範 GetColumnInfo
使用方式。 在此範例中, CMyRowset
是 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]表示數據表標識碼之的指標 DBID
。
pIndexID
[in]表示索引標識碼的指標 DBID
。
傳回值
標準 HRESULT。
備註
這個方法會透過 靜態向上廣播 CRowsetImpl
呼叫,以填入數據成員 m_strCommandText 和 m_strIndexText。 根據預設,此方法會檢查其中一個或兩個參數是否包含字串值。 如果它們包含字串值,這個方法會將字串值複製到數據成員。 藉由將具有這個簽章的方法放在衍生類別中 CRowsetImpl
,系統會呼叫方法,而不是基底實作。
CRowsetImpl::ValidateCommandID
檢查是否或兩者都包含 DBID
字串值,如果是的話,請將它們複製到其數據成員 m_strCommandText 和 m_strIndexText。
語法
HRESULT CRowsetBaseImpl::ValidateCommandID(DBID* pTableID,
DBID* pIndexID);
參數
pTableID
[in]表示數據表標識碼的指標 DBID
。
pIndexID
[in]表示索引標識碼的指標 DBID
。
傳回值
標準 HRESULT。
備註
這個方法會透過 靜態向上廣播 CRowsetImpl
呼叫,以填入其數據成員 m_strCommandText 和 m_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;