CRowsetImpl – třída
Poskytuje standardní implementaci sady řádků OLE DB bez nutnosti vícenásobné dědičnosti mnoha implementačních rozhraní.
Syntaxe
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>
Parametry
T
Třída uživatele, která je odvozena od CRowsetImpl
.
Úložiště
Třída záznamu uživatele.
CreatorClass
Třída, která obsahuje vlastnosti sady řádků; obvykle příkaz.
ArrayType
Třída, která bude fungovat jako úložiště pro data sady řádků. Tento parametr má výchozí hodnotu CAtlArray
, ale může to být libovolná třída, která podporuje požadované funkce.
Požadavky
Hlavička: atldb.h
Členové
Metody
Název | Popis |
---|---|
NameFromDBID | Extrahuje řetězec z řetězce DBID a zkopíruje ho do řetězce bstr předaného. |
SetCommandText | Ověří a uloží DBID s do dvou řetězců (m_strCommandText a m_strIndexText). |
Přepisovatelné metody
Název | Popis |
---|---|
GetColumnInfo | Načte informace o sloupci pro konkrétní požadavek klienta. |
GetCommandFromID | Zkontroluje, jestli oba parametry obsahují řetězcové hodnoty, a pokud ano, zkopíruje řetězcové hodnoty do datových členů m_strCommandText a m_strIndexText. |
ValidateCommandID | Zkontroluje, jestli některé nebo obě DBID hodnoty obsahují řetězcové hodnoty, a pokud ano, zkopíruje je do svých datových členů m_strCommandText a m_strIndexText. |
Datové členy
Název | Popis |
---|---|
m_rgRowData | Ve výchozím nastavení CAtlArray šablona šablony uživatele, která šablonuje argument šablony CRowsetImpl pro . Jinou třídu typu pole lze použít změnou argumentu ArrayType šablony na CRowsetImpl . |
m_strCommandText | Obsahuje počáteční příkaz sady řádků. |
m_strIndexText | Obsahuje počáteční index sady řádků. |
Poznámky
CRowsetImpl
poskytuje přepsání ve formě statických upcastů. Metody řídí způsob, jakým daná sada řádků ověří text příkazu. Vlastní třídu stylu můžete vytvořit CRowsetImpl
tak, že rozhraní implementace zdědí vícenásobně. Jedinou metodou, pro kterou je nutné zadat implementaci, je Execute
. V závislosti na typu sady řádků, kterou vytváříte, budou metody tvůrce očekávat různé podpisy Execute
. Pokud například k implementaci sady řádků schématu používáte odvozenou CRowsetImpl
třídu, Execute
bude mít metoda následující podpis:
HRESULT Execute(LONG* pcRows, ULONG cRestrictions, const VARIANT* rgRestrictions)
Pokud vytváříte -odvozenou CRowsetImpl
třídu pro implementaci sady řádků příkazu nebo relace, Execute
metoda bude mít následující podpis:
HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)
Pokud chcete implementovat některou CRowsetImpl
z metod odvozených Execute
od -, je nutné vyplnit interní vyrovnávací paměti dat (m_rgRowData).
CRowsetImpl::NameFromDBID
Extrahuje řetězec z řetězce DBID
a zkopíruje ho do řetězce bstr předaného.
Syntaxe
HRESULT CRowsetBaseImpl::NameFromDBID(DBID* pDBID,
CComBSTR& bstr,
bool bIndex);
Parametry
pDBID
[v] Ukazatel na DBID
řetězec, ze kterého chcete extrahovat řetězec.
bstr
[v] Odkaz CComBSTR pro umístění kopie DBID
řetězce.
bIndex
[v] true
pokud index DBID
; false
pokud tabulka DBID
.
Návratová hodnota
Standardní HODNOTA HRESULT. V závislosti na tom, zda DBID
je tabulka nebo index (označeno bIndex), metoda vrátí DB_E_NOINDEX nebo DB_E_NOTABLE.
Poznámky
Tato metoda je volána CRowsetImpl
implementace ValidateCommandID a GetCommandFromID.
CRowsetImpl::SetCommandText
Ověří a uloží DBID
s do dvou řetězců (m_strCommandText a m_strIndexText).
Syntaxe
HRESULT CRowsetBaseImpl::SetCommandText(DBID* pTableID,
DBID* pIndexID);
Parametry
pTableID
[v] Ukazatel na reprezentaci DBID
ID tabulky.
pIndexID
[v] Ukazatel na reprezentaci DBID
ID indexu.
Návratová hodnota
Standardní HODNOTA HRESULT.
Poznámky
Metoda SetCommentText
je volána CreateRowset
statickou metodou šablony IOpenRowsetImpl
.
Tato metoda deleguje svou práci voláním ValidateCommandID a GetCommandFromID prostřednictvím upcasted ukazatele.
CRowsetImpl::GetColumnInfo
Načte informace o sloupci pro konkrétní požadavek klienta.
Syntaxe
static ATLCOLUMNINFO* CRowsetBaseImpl::GetColumnInfo(T* pv,
ULONG* pcCols);
Parametry
Pv
[v] Ukazatel na odvozenou CRowsetImpl
třídu uživatele.
pcCols
[v] Ukazatel (výstup) na počet vrácených sloupců.
Návratová hodnota
Ukazatel na statickou ATLCOLUMNINFO
strukturu.
Poznámky
Tato metoda je rozšířená přepsání.
Tato metoda je volána několika základními třídami implementace k načtení informací o sloupci pro konkrétní požadavek klienta. Obvykle by tato metoda byla volána IColumnsInfoImpl
. Pokud tuto metodu přepíšete, musíte do své -odvozené třídy umístit verzi metody CRowsetImpl
. Vzhledem k tomu, že metoda může být umístěna v jiné než templatizované třídě, musíte změnit pv na odpovídající CRowsetImpl
-odvozenou třídu.
Následující příklad ukazuje GetColumnInfo
použití. V tomto příkladu CMyRowset
je -odvozená CRowsetImpl
třída. Chcete-li přepsat GetColumnInfo
pro všechny instance této třídy, umístěte do definice třídy následující metodu 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
Zkontroluje, jestli oba parametry obsahují řetězcové hodnoty, a pokud ano, zkopíruje řetězcové hodnoty do datových členů m_strCommandText a m_strIndexText.
Syntaxe
HRESULT CRowsetBaseImpl::GetCommandFromID(DBID* pTableID,
DBID* pIndexID);
Parametry
pTableID
[v] Ukazatel na reprezentaci DBID
ID tabulky.
pIndexID
[v] Ukazatel na reprezentaci DBID
ID indexu.
Návratová hodnota
Standardní HODNOTA HRESULT.
Poznámky
Tato metoda se volá prostřednictvím statického upcastu, CRowsetImpl
který naplní datové členy m_strCommandText a m_strIndexText. Ve výchozím nastavení tato metoda kontroluje, jestli oba parametry obsahují řetězcové hodnoty. Pokud obsahují řetězcové hodnoty, tato metoda zkopíruje řetězcové hodnoty do datových členů. Umístěním metody s tímto podpisem do CRowsetImpl
-odvozené třídy bude vaše metoda volána místo základní implementace.
CRowsetImpl::ValidateCommandID
Zkontroluje, jestli některé nebo obě DBID
hodnoty obsahují řetězcové hodnoty, a pokud ano, zkopíruje je do svých datových členů m_strCommandText a m_strIndexText.
Syntaxe
HRESULT CRowsetBaseImpl::ValidateCommandID(DBID* pTableID,
DBID* pIndexID);
Parametry
pTableID
[v] Ukazatel na reprezentaci DBID
ID tabulky.
pIndexID
[v] Ukazatel na reprezentaci DBID
ID indexu.
Návratová hodnota
Standardní HODNOTA HRESULT.
Poznámky
Tato metoda se volá prostřednictvím statického upcastu, který CRowsetImpl
naplní své datové členy m_strCommandText a m_strIndexText. Ve výchozím nastavení tato metoda kontroluje, jestli buď nebo obě DBID
obsahují řetězcové hodnoty, a pokud ano, zkopíruje je do svých datových členů. Umístěním metody s tímto podpisem do CRowsetImpl
-odvozené třídy bude vaše metoda volána místo základní implementace.
CRowsetImpl::m_rgRowData
Ve výchozím nastavení CAtlArray
šablona šablony uživatele, která šablonuje argument šablony CRowsetImpl
pro .
Syntaxe
ArrayType CRowsetBaseImpl::m_rgRowData;
Poznámky
ArrayType je parametr šablony pro CRowsetImpl
.
CRowsetImpl::m_strCommandText
Obsahuje počáteční příkaz sady řádků.
Syntaxe
CComBSTR CRowsetBaseImpl::m_strCommandText;
CRowsetImpl::m_strIndexText
Obsahuje počáteční index sady řádků.
Syntaxe
CComBSTR CRowsetBaseImpl::m_strIndexText;