Freigeben über


CRowsetImpl-Klasse

Stellt eine standardmäßige OLE DB-Rowsetimplementierung bereit, ohne dass mehrere Vererbungen vieler Implementierungsschnittstellen erforderlich sind.

Syntax

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>

Parameter

T
Die Klasse des Benutzers, die von CRowsetImpl.

Storage
Die Benutzerdatensatzklasse.

CreatorClass
Die Klasse, die Eigenschaften für das Rowset enthält; in der Regel der Befehl.

ArrayType
Die Klasse, die als Speicher für die Daten des Rowsets fungiert. Dieser Parameter ist CAtlArraystandardmäßig aktiviert, kann jedoch eine beliebige Klasse sein, die die erforderliche Funktionalität unterstützt.

Anforderungen

Header: „atldb.h“

Mitglieder

Methoden

Name Beschreibung
NameFromDBID Extrahiert eine Zeichenfolge aus einem DBID und kopiert sie in den übergebenen bstr .
SetCommandText Überprüft und speichert die DBIDs in den beiden Zeichenfolgen (m_strCommandText und m_strIndexText).

Außerkraftsetzungsmethoden

Name Beschreibung
Getcolumninfo Ruft Spalteninformationen für eine bestimmte Clientanforderung ab.
GetCommandFromID Überprüft, ob entweder oder beide Parameter Zeichenfolgenwerte enthalten, und kopiert in diesem Falls dies die Zeichenfolgenwerte in die Datenmber m_strCommandText und m_strIndexText.
ValidateCommandID Überprüft, ob entweder oder beide DBIDZeichenfolgenwerte enthalten, und kopiert sie in diesem Falls in die Datenmmber m_strCommandText und m_strIndexText.

Datenelemente

Name Beschreibung
m_rgRowData Standardmäßig wird für das Argument "Benutzerdatensatzvorlage" ein CAtlArray vorlagenbasiertes Argument CRowsetImplverwendet. Eine andere Arraytypklasse kann verwendet werden, indem sie das ArrayType Vorlagenargument in CRowsetImpl.
m_strCommandText Enthält den anfänglichen Befehl des Rowsets.
m_strIndexText Enthält den anfänglichen Index des Rowsets.

Hinweise

CRowsetImpl stellt Außerkraftsetzungen in Form statischer Upcasts bereit. Die Methoden steuern die Art und Weise, in der ein bestimmtes Rowset Befehlstext überprüft. Sie können ihre eigene CRowsetImplKlasse "-style" erstellen, indem Sie Ihre Implementierungsschnittstellen mehrfach geerbt machen. Die einzige Methode, für die Sie die Implementierung bereitstellen müssen, ist Execute. Je nachdem, welche Art von Rowset Sie erstellen, erwarten die Erstellermethoden unterschiedliche Signaturen für Execute. Wenn Sie z. B. eine CRowsetImplvon -abgeleitete Klasse zum Implementieren eines Schema-Rowsets verwenden, hat die Execute Methode die folgende Signatur:

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

Wenn Sie eine abgeleitete Klasse zum Implementieren des Rowsets eines CRowsetImplBefehls oder einer Sitzung erstellen, hat die Execute Methode die folgende Signatur:

HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)

Um eine der CRowsetImplvon -abgeleiteten Execute Methoden zu implementieren, müssen Sie die internen Datenpuffer auffüllen (m_rgRowData).

CRowsetImpl::NameFromDBID

Extrahiert eine Zeichenfolge aus einem DBID und kopiert sie in den übergebenen bstr .

Syntax

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

Parameter

pDBID
[in] Ein Zeiger auf den DBID , aus dem eine Zeichenfolge extrahiert werden soll.

Bstr
[in] Ein CComBSTR-Verweis , um eine Kopie der DBID Zeichenfolge zu platzieren.

bIndex
[in] true wenn ein Index DBID; false wenn eine Tabelle DBID.

Rückgabewert

Ein Standard-HRESULT. Je nachdem, ob es DBID sich um eine Tabelle oder einen Index handelt (mit bIndex gekennzeichnet), gibt die Methode entweder DB_E_NOINDEX oder DB_E_NOTABLE zurück.

Hinweise

Diese Methode wird von den CRowsetImpl Implementierungen von ValidateCommandID und GetCommandFromID aufgerufen.

CRowsetImpl::SetCommandText

Überprüft und speichert die DBIDs in den beiden Zeichenfolgen (m_strCommandText und m_strIndexText).

Syntax

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

Parameter

Ptableid
[in] Ein Zeiger auf die DBID Darstellung der Tabellen-ID.

pIndexID
[in] Ein Zeiger auf die DBID Index-ID.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Die SetCommentText Methode wird von CreateRowset, einer statischen templatisierten Methode von IOpenRowsetImplaufgerufen.

Diese Methode delegiert seine Arbeit durch Aufrufen von ValidateCommandID und GetCommandFromID über einen hochcasteten Zeiger.

CRowsetImpl::GetColumnInfo

Ruft Spalteninformationen für eine bestimmte Clientanforderung ab.

Syntax

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

Parameter

Pv
[in] Ein Zeiger auf die abgeleitete Klasse des CRowsetImpl Benutzers.

pcCols
[in] Ein Zeiger (Ausgabe) auf die Anzahl der zurückgegebenen Spalten.

Rückgabewert

Ein Zeiger auf eine statische ATLCOLUMNINFO Struktur.

Hinweise

Diese Methode ist eine erweiterte Außerkraftsetzung.

Diese Methode wird von mehreren Basisimplementierungsklassen aufgerufen, um Spalteninformationen für eine bestimmte Clientanforderung abzurufen. In der Regel wird diese Methode von IColumnsInfoImplaufgerufen. Wenn Sie diese Methode außer Kraft setzen, müssen Sie eine Version der Methode in der CRowsetImplabgeleiteten Klasse platzieren. Da die Methode in einer nicht templatisierten Klasse platziert werden kann, müssen Sie pv in die entsprechende CRowsetImplabgeleitete Klasse ändern.

Im folgenden Beispiel wird die Verwendung veranschaulicht GetColumnInfo . In diesem Beispiel CMyRowset handelt es sich um eine CRowsetImplabgeleitete Klasse. Um für alle Instanzen dieser Klasse außer GetColumnInfo Kraft zu setzen, platzieren Sie die folgende Methode in der CMyRowset Klassendefinition:

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

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

CRowsetImpl::GetCommandFromID

Überprüft, ob entweder oder beide Parameter Zeichenfolgenwerte enthalten, und kopiert in diesem Falls dies die Zeichenfolgenwerte in die Datenmber m_strCommandText und m_strIndexText.

Syntax

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

Parameter

Ptableid
[in] Ein Zeiger auf die DBID Tabellen-ID.

pIndexID
[in] Ein Zeiger auf die DBID Darstellung der Index-ID.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode wird über einen statischen Upcast aufgerufen, indem CRowsetImpl die Datenmember m_strCommandText und m_strIndexText aufgefüllt werden. Standardmäßig überprüft diese Methode, ob entweder oder beide Parameter Zeichenfolgenwerte enthalten. Wenn sie Zeichenfolgenwerte enthalten, kopiert diese Methode die Zeichenfolgenwerte in die Datenmmber. Wenn Sie eine Methode mit dieser Signatur in Ihrer CRowsetImplabgeleiteten Klasse platzieren, wird die Methode anstelle der Basisimplementierung aufgerufen.

CRowsetImpl::ValidateCommandID

Überprüft, ob entweder oder beide DBIDZeichenfolgenwerte enthalten, und kopiert sie in diesem Falls in die Datenmmber m_strCommandText und m_strIndexText.

Syntax

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

Parameter

Ptableid
[in] Ein Zeiger auf die DBID Darstellung der Tabellen-ID.

pIndexID
[in] Ein Zeiger auf die DBID Index-ID.

Rückgabewert

Ein Standard-HRESULT.

Hinweise

Diese Methode wird über einen statischen Upcast aufgerufen, indem CRowsetImpl die Datenmember m_strCommandText und m_strIndexText aufgefüllt werden. Standardmäßig überprüft diese Methode, ob entweder oder beide DBIDZeichenfolgenwerte enthalten, und in diesem Fall werden sie in die Datenmmber kopiert. Wenn Sie eine Methode mit dieser Signatur in Ihrer CRowsetImplabgeleiteten Klasse platzieren, wird die Methode anstelle der Basisimplementierung aufgerufen.

CRowsetImpl::m_rgRowData

Standardmäßig wird für das Argument "Benutzerdatensatzvorlage" ein CAtlArray vorlagenbasiertes Argument CRowsetImplverwendet.

Syntax

ArrayType CRowsetBaseImpl::m_rgRowData;

Hinweise

ArrayType ist ein Vorlagenparameter für CRowsetImpl.

CRowsetImpl::m_strCommandText

Enthält den anfänglichen Befehl des Rowsets.

Syntax

CComBSTR CRowsetBaseImpl::m_strCommandText;

CRowsetImpl::m_strIndexText

Enthält den anfänglichen Index des Rowsets.

Syntax

CComBSTR CRowsetBaseImpl::m_strIndexText;