CCustomRowset (CustomRS.H)
La procedura guidata genera una voce per l'oggetto set di righe. In questo caso, viene chiamato CCustomRowset
. La CCustomRowset
classe eredita da una classe del provider OLE DB denominata CRowsetImpl
, che implementa tutte le interfacce necessarie per l'oggetto set di righe. Il codice seguente mostra la catena di ereditarietà per CRowsetImpl
:
template <class T, class Storage, class CreatorClass,
class ArrayType = CAtlArray<Storage>>
class CMyRowsetImpl:
public CRowsetImpl<T, Storage, CreatorClass, ArrayType,
CSimpleRow, IRowsetLocateImpl< T >>
CRowsetImpl
usa anche le IAccessor
interfacce e IColumnsInfo
. Usa queste interfacce per i campi di output nelle tabelle. La classe fornisce anche un'implementazione per IRowsetIdentity
, che consente al consumer di determinare se due righe sono uguali. L'interfaccia IRowsetInfo
implementa le proprietà per l'oggetto set di righe. L'interfaccia IConvertType
consente al provider di risolvere le differenze tra i tipi di dati richiesti dal consumer e quelli usati dal provider.
L'interfaccia IRowset
gestisce effettivamente il recupero dei dati. Il consumer chiama innanzitutto un metodo denominato GetNextRows
per restituire un handle a una riga, noto come HROW
. Il consumer chiama IRowset::GetData
quindi con tale HROW
oggetto per recuperare i dati richiesti.
CRowsetImpl
accetta anche diversi parametri di modello. Questi parametri consentono di determinare il modo in cui la classe gestisce i CRowsetImpl
dati. L'argomento ArrayType
consente di determinare il meccanismo di archiviazione usato per archiviare i dati delle righe. Il parametro RowClass specifica la classe che contiene un oggetto HROW
.
Il parametro RowsetInterface consente anche di usare l'interfaccia IRowsetLocate
o IRowsetScroll
. Le IRowsetLocate
interfacce e IRowsetScroll
ereditano entrambi da IRowset
. Pertanto, i modelli di provider OLE DB devono fornire una gestione speciale per queste interfacce. Se si vuole usare una di queste interfacce, è necessario usare questo parametro.