Sdílet prostřednictvím


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ží DBIDs 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ě DBIDhodnoty 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 CRowsetImplpro . 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 CRowsetImpltak, ž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 CRowsetImpltřídu, Execute bude mít metoda následující podpis:

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

Pokud vytváříte -odvozenou CRowsetImpltří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 CRowsetImplz 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ží DBIDs 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 CreateRowsetstatickou 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á CRowsetImpltří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ě DBIDhodnoty 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ě DBIDobsahují ř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 CRowsetImplpro .

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;