Rekordy użytkowników
Aby użyć akcesor statycznych (czyli akcesor pochodzące z CAccessor), Twoje konsument musi mieć rekord użytkownika.Rekord użytkownika jest klasa C++, która zawiera elementy danych do uchwytu wejściowego lub wyjściowego.ATL OLE DB konsumenta Kreator generuje rekordu użytkownika dla użytkownika konsumenta.Metody można dodać do rekordu użytkownika dla zadań opcjonalnych, takich jak obsługa polecenia.
Poniższy kod przedstawia przykładowego rekordu, który obsługuje polecenia.W rekordzie użytkownika BEGIN_COLUMN_MAP reprezentuje zestawu wierszy danych przekazany do konsumenta od dostawcy.BEGIN_PARAM_MAPreprezentuje zestaw parametrów polecenia.W tym przykładzie CCommand klasy obsługi parametry polecenia.Członkowie danych w wpisów map reprezentują przesunięcia w jeden ciągły blok pamięci dla każdego wystąpienia klasy.COLUMN_ENTRY Odpowiadają makra PROVIDER_COLUMN_ENTRY makra po stronie dostawcy.
Aby uzyskać więcej informacji o COLUMN_MAP i PARAM_MAP makr, zobacz makr dla OLE DB konsumenta szablony.
class CArtists
{
public:
// Data Elements
CHAR m_szFirstName[20];
CHAR m_szLastName[30];
short m_nAge;
// Column binding map
BEGIN_COLUMN_MAP(CArtists)
COLUMN_ENTRY(1, m_szFirstName)
COLUMN_ENTRY(2, m_szLastName)
COLUMN_ENTRY(3, m_nAge)
END_COLUMN_MAP()
// Parameter binding map
BEGIN_PARAM_MAP(CArtists)
COLUMN_ENTRY(1, m_nAge)
END_PARAM_MAP()
};
Wygenerowany przez kreatora rekordów użytkowników
Jeśli ATL OLE DB konsumenta Kreator umożliwia generowanie konsumenta, masz wybór przy użyciu szablonów OLE DB lub atrybuty OLE DB.Wygenerowany kod różni się w każdym przypadku.Aby uzyskać więcej informacji na temat tego kodu, zobacz Klasy Consumer Wizard-Generated.
Obsługa wielu akcesorów w rekordu użytkownika
Szczegółowe omówienie scenariuszy, w których trzeba użyć wielu akcesorów, zobacz Za pomocą wielu akcesorów na wierszy.
Poniższy przykład pokazuje rekordu użytkownika, zmodyfikowany w celu obsługi wielu akcesorów na zestawie wierszy.Zamiast BEGIN_COLUMN_MAP i END_COLUMN_MAP, używa BEGIN_ACCESSOR_MAP i BEGIN_ACCESSOR dla każdego typu accessor.BEGIN_ACCESSOR Makro określa liczbę akcesor (przesunięcie od zera) i czy akcesor jest autoaccessor.Wywołanie Autoaccessors GetData do pobierania danych, automatycznie na wywołaniu MoveNext.Akcesory nonautomatic wymagają jawnie pobierania danych.Użyj akcesor nonautomatic są wiązane z polem dużych danych (takich jak mapa bitowa), nie można pobrać dla każdego rekordu.
class CMultiArtists
{
public:
// Data Elements
CHAR m_szFirstName[20];
CHAR m_szLastName[30];
short m_nAge;
// Column binding map
BEGIN_ACCESSOR_MAP(CMultiArtists, 2)
BEGIN_ACCESSOR(0, true) // true specifies an auto accessor
COLUMN_ENTRY(1, m_szFirstName)
COLUMN_ENTRY(2, m_szLastName)
END_ACCESSOR()
BEGIN_ACCESSOR(1, false) // false specifies a manual accessor
COLUMN_ENTRY(3, m_nAge)
END_ACCESSOR()
END_ACCESSOR_MAP()
};