Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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“
Member
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;