Pour utiliser un accesseur statique, votre consommation doit avoir un enregistrement utilisateur. L'enregistrement utilisateur est une classe C++ qui contient les éléments de données à la poignée d'entrée ou de sortie. L'Assistant objet ATL génère un enregistrement utilisateur pour votre consommation. Vous pouvez ajouter des méthodes à l'enregistrement de l'utilisateur pour les tâches facultatives comme traitement des commandes.
Le code suivant illustre un enregistrement de l'échantillon qui gère les commandes. Dans le dossier de l'utilisateur, BEGIN_OLUMN_MAP représente un ensemble de lignes de données transmis au consommateur d'un fournisseur. BEGIN_PARAM_MAP représente un ensemble de paramètres de la commande. Cet exemple utilise une classe CCommand pour gérer les paramètres de la commande. Les membres de données dans les entrées de la carte représentent les décalages dans un bloc contigu de mémoire pour chaque instance de la classe. Les macros COLUMN_ENTRY correspondent pour les macros PROVIDER_COLUMN_ENTRY côté fournisseur.
Pour plus d'informations sur les macros COLUMN_MAP et PARAM_MAP , consultez Macros pour les modèles du consommateur OLE DB.
classe CArtists
{
public :
/ / Éléments de données
CHAR m_szFirstName [20] ;
CHAR m_szLastName [30] ;
m_nAge courtes ;
/ / sortie carte de liaison
BEGIN_COLUMN_MAP(CArtists)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
COLUMN_ENTRY (3, m_nAge)
END_COLUMN_MAP()
/ / paramètre de liaison de carte
BEGIN_PARAM_MAP(CArtists)
COLUMN_ENTRY (1, m_nAge)
END_PARAM_MAP
}
L'exemple suivant illustre l'enregistrement utilisateur modifiée à l'appui des accesseurs multiples sur l'ensemble de lignes. Au lieu de BEGIN_COLUMN_MAP et END_COLUMN_MAP, il utilise BEGIN_ACCESSOR_MAP et BEGIN_ACCESSOR pour chaque accesseur. La macro BEGIN_ACCESSOR spécifie le numéro de l'accesseur (offset à partir de zéro) et indique si l'accesseur est un auto-accesseur. Autoaccessors appelez GetData pour récupérer les données automatiquement à un appel à MoveNext. Les accesseurs non automatiques exigent récupérer explicitement les données. Utilisez un accesseur non automatique si vous liez à un vaste champ de données (comme une image bitmap) que vous ne pouvez pas récupérer pour chaque enregistrement.
classe CMultiArtists
{
public :
/ / Éléments de données
CHAR m_szFirstName [20] ;
CHAR m_szLastName [30] ;
m_nAge courtes ;
/ / sortie carte de liaison
BEGIN_ACCESSOR_MAP (CMultiArtists, 2)
BEGIN_ACCESSOR (0, true)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
END_ACCESSOR()
BEGIN_ACCESSOR (1, false) / / pas un accesseur automatique
COLUMN_ENTRY (3, m_nAge)
END_ACCESSOR()
END_ACCESSOR_MAP()
}
Retour à l'Architecture de modèle OLE DB consommation