CCustomRowset (CustomRS.H)
L’Assistant génère une entrée pour l’objet d’ensemble de lignes. Dans ce cas, il est appelé CCustomRowset
. La CCustomRowset
classe hérite d’une classe de fournisseur OLE DB appelée CRowsetImpl
, qui implémente toutes les interfaces nécessaires pour l’objet d’ensemble de lignes. Le code suivant montre la chaîne d’héritage pour CRowsetImpl
:
template <class T, class Storage, class CreatorClass,
class ArrayType = CAtlArray<Storage>>
class CMyRowsetImpl:
public CRowsetImpl<T, Storage, CreatorClass, ArrayType,
CSimpleRow, IRowsetLocateImpl< T >>
CRowsetImpl
utilise également les interfaces et IColumnsInfo
les IAccessor
interfaces. Il utilise ces interfaces pour les champs de sortie dans les tables. La classe fournit également une implémentation pour IRowsetIdentity
, ce qui permet au consommateur de déterminer si deux lignes sont identiques. L’interface IRowsetInfo
implémente les propriétés de l’objet d’ensemble de lignes. L’interface IConvertType
permet au fournisseur de résoudre les différences entre les types de données demandés par le consommateur et ceux utilisés par le fournisseur.
L’interface IRowset
gère réellement la récupération des données. Le consommateur appelle d’abord une méthode appelée GetNextRows
pour retourner un handle à une ligne, appelée HROW
. Le consommateur appelle IRowset::GetData
ensuite avec celui-ci HROW
pour récupérer les données demandées.
CRowsetImpl
prend également plusieurs paramètres de modèle. Ces paramètres vous permettent de déterminer comment la CRowsetImpl
classe gère les données. L’argument ArrayType
vous permet de déterminer le mécanisme de stockage utilisé pour stocker les données de ligne. Le paramètre RowClass spécifie la classe qui contient un HROW
.
Le paramètre RowsetInterface vous permet également d’utiliser l’interface ou IRowsetScroll
l’interfaceIRowsetLocate
. Les IRowsetLocate
interfaces et IRowsetScroll
les deux héritent de IRowset
. Par conséquent, les modèles de fournisseur OLE DB doivent fournir une gestion spéciale pour ces interfaces. Si vous souhaitez utiliser l’une de ces interfaces, vous devez utiliser ce paramètre.