Udostępnij za pośrednictwem


CRowsetImpl — Klasa

Zapewnia standardową implementację zestawu wierszy OLE DB bez konieczności dziedziczenia wielu interfejsów implementacji.

Składnia

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
Klasa użytkownika, która pochodzi z klasy CRowsetImpl.

Storage
Klasa rekordu użytkownika.

CreatorClass
Klasa zawierająca właściwości zestawu wierszy; zazwyczaj polecenie.

ArrayType
Klasa, która będzie działać jako magazyn danych zestawu wierszy. Ten parametr domyślnie ma CAtlArraywartość , ale może to być dowolna klasa, która obsługuje wymagane funkcje.

Wymagania

Nagłówek: atldb.h

Członkowie

Metody

Nazwa/nazwisko opis
NameFromDBID Wyodrębnia ciąg z obiektu DBID i kopiuje go do przekazanego ciągu .
SetCommandText Weryfikuje i przechowuje s DBIDw dwóch ciągach (m_strCommandText i m_strIndexText).

Metody, które można zastąpić

Nazwa/nazwisko opis
Getcolumninfo Pobiera informacje o kolumnie dla określonego żądania klienta.
GetCommandFromID Sprawdza, czy oba parametry zawierają wartości ciągów, a jeśli tak, kopiuje wartości ciągu do elementów członkowskich danych m_strCommandText i m_strIndexText.
ValidateCommandID Sprawdza, czy element albo oba DBIDzawierają wartości ciągów, a jeśli tak, kopiuje je do elementów członkowskich danych m_strCommandText i m_strIndexText.

Składowe danych

Nazwa/nazwisko opis
m_rgRowData Domyślnie element CAtlArray templatizuje argument szablonu rekordu użytkownika na .CRowsetImpl Inną klasą typu tablicy można użyć przez zmianę argumentu szablonu ArrayType na CRowsetImpl.
m_strCommandText Zawiera początkowe polecenie zestawu wierszy.
m_strIndexText Zawiera początkowy indeks zestawu wierszy.

Uwagi

CRowsetImpl Udostępnia przesłonięcia w postaci statycznych emisji upcasts. Metody kontrolują sposób, w jaki dany zestaw wierszy zweryfikuje tekst polecenia. Możesz utworzyć własną CRowsetImplklasę stylu, tworząc interfejsy implementacji dziedziczone wiele. Jedyną metodą, dla której należy podać implementację, jest Execute. W zależności od typu tworzonego zestawu wierszy metody twórcy będą oczekiwać różnych podpisów dla elementu Execute. Jeśli na przykład używasz klasy -pochodnej CRowsetImpldo zaimplementowania zestawu wierszy schematu, Execute metoda będzie mieć następujący podpis:

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

Jeśli tworzysz klasę pochodną CRowsetImplw celu zaimplementowania zestawu wierszy polecenia lub sesji, Execute metoda będzie mieć następujący podpis:

HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)

Aby zaimplementować dowolną CRowsetImplz metod pochodnych Execute , należy wypełnić wewnętrzne bufory danych (m_rgRowData).

CRowsetImpl::NameFromDBID

Wyodrębnia ciąg z obiektu DBID i kopiuje go do przekazanego ciągu .

Składnia

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

Parametry

PDBID
[in] Wskaźnik, DBID z którego ma być wyodrębnione ciąg.

Bstr
[in] Odwołanie CComBSTR do umieszczenia kopii DBID ciągu.

bIndex
[in] true if an index DBID; false if a table DBID.

Wartość zwracana

Standardowy HRESULT. W zależności od tego, czy DBID jest to tabela, czy indeks (oznaczony przez bIndex), metoda zwróci DB_E_NOINDEX lub DB_E_NOTABLE.

Uwagi

Ta metoda jest wywoływana przez CRowsetImpl implementacje ValidateCommandID i GetCommandFromID.

CRowsetImpl::SetCommandText

Weryfikuje i przechowuje s DBIDw dwóch ciągach (m_strCommandText i m_strIndexText).

Składnia

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

Parametry

pTableID
[in] Wskaźnik DBID reprezentujący identyfikator tabeli.

Pindexid
[in] Wskaźnik DBID reprezentujący identyfikator indeksu.

Wartość zwracana

Standardowy HRESULT.

Uwagi

Metoda SetCommentText jest wywoływana przez CreateRowsetmetodę , statyczną metodę templatized klasy IOpenRowsetImpl.

Ta metoda deleguje swoją pracę, wywołując polecenie ValidateCommandID i GetCommandFromID za pomocą upcasted wskaźnika.

CRowsetImpl::GetColumnInfo

Pobiera informacje o kolumnie dla określonego żądania klienta.

Składnia

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

Parametry

Pv
[in] Wskaźnik do klasy pochodnej CRowsetImpl użytkownika.

pcCols
[in] Wskaźnik (dane wyjściowe) do liczby zwracanych kolumn.

Wartość zwracana

Wskaźnik do struktury statycznej ATLCOLUMNINFO .

Uwagi

Ta metoda jest zaawansowanym przesłonięciem.

Ta metoda jest wywoływana przez kilka klas implementacji podstawowej w celu pobrania informacji o kolumnie dla określonego żądania klienta. Zazwyczaj ta metoda jest wywoływana przez IColumnsInfoImplmetodę . Jeśli zastąpisz tę metodę, musisz umieścić wersję metody w CRowsetImplklasie -pochodnej. Ponieważ metoda może zostać umieszczona w klasie innej niż templatized, należy zmienić wartość pv na odpowiednią CRowsetImplklasę pochodną.

W poniższym przykładzie pokazano GetColumnInfo użycie. W tym przykładzie CMyRowset jest klasą pochodną CRowsetImpl. Aby zastąpić GetColumnInfo wszystkie wystąpienia tej klasy, umieść następującą CMyRowset metodę w definicji klasy:

static ATLCOLUMNINFO* GetColumnInfo(CCustomRowset* pRowset, DBORDINAL* pcCols)
{
   // Add your implementation here and/or call the base class

   return CRowsetImpl::GetColumnInfo(pRowset, pcCols);
}

CRowsetImpl::GetCommandFromID

Sprawdza, czy oba parametry zawierają wartości ciągów, a jeśli tak, kopiuje wartości ciągu do elementów członkowskich danych m_strCommandText i m_strIndexText.

Składnia

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

Parametry

pTableID
[in] Wskaźnik DBID reprezentujący identyfikator tabeli.

Pindexid
[in] Wskaźnik DBID reprezentujący identyfikator indeksu.

Wartość zwracana

Standardowy HRESULT.

Uwagi

Ta metoda jest wywoływana za pośrednictwem statycznej emisji upcast CRowsetImpl , aby wypełnić elementy członkowskie danych m_strCommandText i m_strIndexText. Domyślnie ta metoda sprawdza, czy oba parametry zawierają wartości ciągów. Jeśli zawierają one wartości ciągów, ta metoda kopiuje wartości ciągu do elementów członkowskich danych. Umieszczając metodę z tym podpisem w CRowsetImplklasie -pochodnej, metoda zostanie wywołana zamiast implementacji podstawowej.

CRowsetImpl::ValidateCommandID

Sprawdza, czy element albo oba DBIDzawierają wartości ciągów, a jeśli tak, kopiuje je do elementów członkowskich danych m_strCommandText i m_strIndexText.

Składnia

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

Parametry

pTableID
[in] Wskaźnik DBID reprezentujący identyfikator tabeli.

Pindexid
[in] Wskaźnik DBID reprezentujący identyfikator indeksu.

Wartość zwracana

Standardowy HRESULT.

Uwagi

Ta metoda jest wywoływana przez statyczną emisję upcast, CRowsetImpl aby wypełnić jego składowe danych m_strCommandText i m_strIndexText. Domyślnie ta metoda sprawdza, czy element albo oba DBIDzawierają wartości ciągów, a jeśli tak, kopiuje je do elementów członkowskich danych. Umieszczając metodę z tym podpisem w CRowsetImplklasie -pochodnej, metoda zostanie wywołana zamiast implementacji podstawowej.

CRowsetImpl::m_rgRowData

Domyślnie element CAtlArray templatizuje argument szablonu rekordu użytkownika na .CRowsetImpl

Składnia

ArrayType CRowsetBaseImpl::m_rgRowData;

Uwagi

ArrayType to parametr szablonu do CRowsetImpl.

CRowsetImpl::m_strCommandText

Zawiera początkowe polecenie zestawu wierszy.

Składnia

CComBSTR CRowsetBaseImpl::m_strCommandText;

CRowsetImpl::m_strIndexText

Zawiera początkowy indeks zestawu wierszy.

Składnia

CComBSTR CRowsetBaseImpl::m_strIndexText;