Udostępnij za pośrednictwem


Rekordy użytkownika

Aby używać statycznych akcesor (czyli akcesor pochodzące z CAccessor), konsument musi mieć rekord użytkownika.Rekord użytkownika jest klasa języka C++, która zawiera elementy danych do dojścia w danych wejściowych lub wyjściowych.ATL OLE DB konsumenta Kreator generuje rekord użytkownika dla swojej konsumenta.Metody można dodać do rekordu użytkownika dla opcjonalnych zadań, takich jak obsługa poleceń.

Poniższy kod przedstawia przykładowego rekordu, który obsługuje polecenia.W rekordzie użytkownika BEGIN_COLUMN_MAP reprezentuje zestaw wierszy danych przekazany do konsumenta z dostawcą usług.BEGIN_PARAM_MAPreprezentuje zestaw parametrów polecenia.W poniższym przykładzie użyto CCommand klasy, aby obsługiwać parametry polecenia.Elementy danych w wpisów map reprezentują przesunięcia w jednym ciągłym bloku pamięci dla każdego wystąpienia klasy.COLUMN_ENTRY Makra odpowiadają 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()
};

Rekordy wygenerowane przez Kreatora użytkowników

Jeśli Kreator ATL OLE DB konsumenta do generowania 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 o tym kodzie, zobacz Klasy Consumer Wizard-Generated.

Obsługa rekordu użytkownika dla wielu akcesorów

Szczegółowe omówienie scenariuszy, w których należy użyć wielu akcesorów, zobacz Za pomocą wielu akcesorów na zestaw 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 akcesor.BEGIN_ACCESSOR Makro określa numer akcesor (przesunięcie od zera) i czy akcesor jest autoaccessor.Wywołanie Autoaccessors GetData do pobierania danych automatycznie na wywołanie MoveNext.Akcesory nonautomatic trzeba jawnie pobierania danych.Użyj nonautomatic metoda dostępu są wiązane z polem dużych danych (np. obraz bitmapowy), które możesz nie chcieć 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()
};

Zobacz też

Koncepcje

Szablony konsumentów OLE DB (C++)