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 CAtlArray
standardmäß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 DBID s 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 DBID Zeichenfolgenwerte 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 CRowsetImpl verwendet. 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 CRowsetImpl
Klasse "-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 CRowsetImpl
von -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 CRowsetImpl
Befehls oder einer Sitzung erstellen, hat die Execute
Methode die folgende Signatur:
HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)
Um eine der CRowsetImpl
von -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 DBID
s 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 IOpenRowsetImpl
aufgerufen.
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 IColumnsInfoImpl
aufgerufen. Wenn Sie diese Methode außer Kraft setzen, müssen Sie eine Version der Methode in der CRowsetImpl
abgeleiteten Klasse platzieren. Da die Methode in einer nicht templatisierten Klasse platziert werden kann, müssen Sie pv in die entsprechende CRowsetImpl
abgeleitete Klasse ändern.
Im folgenden Beispiel wird die Verwendung veranschaulicht GetColumnInfo
. In diesem Beispiel CMyRowset
handelt es sich um eine CRowsetImpl
abgeleitete 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 CRowsetImpl
abgeleiteten Klasse platzieren, wird die Methode anstelle der Basisimplementierung aufgerufen.
CRowsetImpl::ValidateCommandID
Überprüft, ob entweder oder beide DBID
Zeichenfolgenwerte 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 DBID
Zeichenfolgenwerte enthalten, und in diesem Fall werden sie in die Datenmmber kopiert. Wenn Sie eine Methode mit dieser Signatur in Ihrer CRowsetImpl
abgeleiteten Klasse platzieren, wird die Methode anstelle der Basisimplementierung aufgerufen.
CRowsetImpl::m_rgRowData
Standardmäßig wird für das Argument "Benutzerdatensatzvorlage" ein CAtlArray
vorlagenbasiertes Argument CRowsetImpl
verwendet.
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;