CCustomRowset (CustomRS.H)
Der Assistent generiert einen Eintrag für das Rowset-Objekt. In diesem Fall wird er aufgerufen CCustomRowset
. Die CCustomRowset
Klasse erbt von einer OLE DB-Anbieterklasse, CRowsetImpl
die alle erforderlichen Schnittstellen für das Rowset-Objekt implementiert. Der folgende Code zeigt die Vererbungskette für CRowsetImpl
:
template <class T, class Storage, class CreatorClass,
class ArrayType = CAtlArray<Storage>>
class CMyRowsetImpl:
public CRowsetImpl<T, Storage, CreatorClass, ArrayType,
CSimpleRow, IRowsetLocateImpl< T >>
CRowsetImpl
verwendet außerdem die IAccessor
Und IColumnsInfo
Schnittstellen. Sie verwendet diese Schnittstellen für Ausgabefelder in Tabellen. Die Klasse stellt außerdem eine Implementierung bereit, für IRowsetIdentity
die der Consumer ermitteln kann, ob zwei Zeilen identisch sind. Die IRowsetInfo
Schnittstelle implementiert Eigenschaften für das Rowset-Objekt. Die IConvertType
Schnittstelle ermöglicht es dem Anbieter, Unterschiede zwischen Datentypen zu lösen, die vom Verbraucher angefordert werden, und denen, die vom Anbieter verwendet werden.
Die IRowset
Schnittstelle verarbeitet tatsächlich den Datenabruf. Der Consumer ruft zuerst eine Methode auf, die aufgerufen wird GetNextRows
, um ein Handle an eine Zeile zurückzugeben, die als "ein HROW
" bezeichnet wird. Der Consumer ruft IRowset::GetData
dann mit dieser HROW
die angeforderten Daten ab.
CRowsetImpl
es werden auch mehrere Vorlagenparameter benötigt. Mit diesen Parametern können Sie bestimmen, wie die CRowsetImpl
Klasse Daten verarbeitet. Mit dem ArrayType
Argument können Sie bestimmen, welcher Speichermechanismus zum Speichern der Zeilendaten verwendet wird. Der RowClass-Parameter gibt an, welche Klasse eine HROW
.
Mit dem RowsetInterface-Parameter können Sie auch die IRowsetLocate
Schnittstelle verwenden IRowsetScroll
. Die IRowsetLocate
beiden IRowsetScroll
Schnittstellen erben von IRowset
. Daher müssen die OLE DB-Anbietervorlagen eine spezielle Behandlung für diese Schnittstellen bereitstellen. Wenn Sie eine dieser Schnittstellen verwenden möchten, müssen Sie diesen Parameter verwenden.