Per utilizzare una funzione di accesso statica, il consumatore deve avere un record utente. Il record utente è una classe C++ che contiene elementi di dati da handle input o output. La creazione guidata oggetto genera un record utente per il consumatore. È possibile aggiungere metodi ai record per attività facoltative come gestione di comandi utente.
Il codice seguente mostra un record di campione che gestisce i comandi. Nel record utente, BEGIN_OLUMN_MAP rappresenta un set di righe di dati passati al consumatore da un provider. BEGIN_PARAM_MAP rappresenta un set di parametri di comando. In questo esempio viene utilizzata una classe CCommand per gestire i parametri del comando. I membri di dati nelle voci della mappa rappresentano gli offset in un blocco contiguo di memoria per ogni istanza della classe. Le macro COLUMN_ENTRY corrispondono alle macro PROVIDER_COLUMN_ENTRY sul lato fornitore.
Per ulteriori informazioni sulle macro COLUMN_MAP e PARAM_MAP , vedere le macro per modelli Consumer OLE DB.
classe CArtists
{
pubblica:
/ / Elementi di dati
CHAR m_szFirstName [20];
CHAR m_szLastName [30];
breve m_nAge;
/ / output mappa associazione
BEGIN_COLUMN_MAP(CArtists)
COLUMN_ENTRY, m_szFirstName (1)
COLUMN_ENTRY, m_szLastName (2)
COLUMN_ENTRY, m_nAge (3)
END_COLUMN_MAP()
/ / parametro binding mappa
BEGIN_PARAM_MAP(CArtists)
COLUMN_ENTRY, m_nAge (1)
END_PARAM_MAP
}
Nell'esempio seguente viene illustrato il record utente modificato per supportare più funzioni di accesso sul set di righe. Anziché BEGIN_COLUMN_MAP ed END_COLUMN_MAP, vengono utilizzate BEGIN_ACCESSOR_MAP e BEGIN_ACCESSOR per ogni funzione di accesso. La macro BEGIN_ACCESSOR specifica il numero di accesso (offset rispetto a zero) e se la funzione di accesso sia un'automatica o meno. Autoaccessors chiamano GetData per recuperare i dati automaticamente con una chiamata al metodo MoveNext. Le funzioni di accesso non automatiche richiedono esplicitamente di recuperare i dati. Utilizzare una funzione di accesso non automatica se effettua l'associazione a un campo dati di grandi dimensioni (come un'immagine bitmap) che si potrebbe non voler recuperare per ogni record.
classe CMultiArtists
{
pubblica:
/ / Elementi di dati
CHAR m_szFirstName [20];
CHAR m_szLastName [30];
breve m_nAge;
/ / output mappa associazione
BEGIN_ACCESSOR_MAP (CMultiArtists, 2)
BEGIN_ACCESSOR vero (0)
COLUMN_ENTRY, m_szFirstName (1)
COLUMN_ENTRY, m_szLastName (2)
END_ACCESSOR()
BEGIN_ACCESSOR falsi (1) / / non una funzione di accesso automatico
COLUMN_ENTRY, m_nAge (3)
END_ACCESSOR()
END_ACCESSOR_MAP()
}