Uživatelské záznamy
Chcete-li použít statický přistupující objekt (to znamená přistupující objekt odvozený z CAccessor), váš příjemce musí mít uživatelský záznam. Uživatelský záznam je třída jazyka C++, která obsahuje datové prvky ke zpracování vstupu nebo výstupu. Průvodce příjemce knihovny ATL technologie OLE DB generuje uživatelské záznamy pro vaše příjemce. K uživatelskému záznamu můžete přidat metody pro volitelné úkoly, jako například příkazy zpracování.
Následující kód zobrazuje ukázkový záznam, který zpracovává příkazy. V uživatelském záznamu představuje BEGIN_COLUMN_MAP sadu řádků dat, která je předána příjemci od zprostředkovatele. BEGIN_PARAM_MAP představuje sadu parametrů příkazu. Tento příklad používá třídu CCommand pro zpracování parametrů příkazu. Datové členy v mapových položkách představují posun do jednoho souvislého bloku paměťi pro každou instanci třídy. Makra COLUMN_ENTRY odpovídají makrům PROVIDER_COLUMN_ENTRY na straně zprostředkovatele.
Další informace o makrech COLUMN_MAP a PARAM_MAP naleznete v části Makra pro šablony příjemce technologie OLE DB.
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()
};
Průvodcem generované uživatelské záznamy
Použijete-li Průvodce příjemce knihovny ATL technologie OLE DB pro vygenerování příjemce, máte možnost použít šablony technologie OLE DB nebo atributy technologie OLE DB. Generovaný kód se liší v každém případě. Další informace o tomto kódu naleznete v tématu Vygenerované třídy průvodcem příjemce.
Podpora uživatelského záznamu pro více přístupových objektů
Podrobné informace o scénářích, ve kterých budete muset použít více přístupových objektů, naleznete v Použití několika přistupujících objektů na sadě řádků.
Následující příklad ukazuje uživatelský záznam, který je změněný tak, aby podporoval více přístupových objektů na sadu řádků. Namísto BEGIN_COLUMN_MAP a END_COLUMN_MAP, používá BEGIN_ACCESSOR_MAP a BEGIN_ACCESSOR pro každý přistupující objekt. Makro BEGIN_ACCESSOR určuje číslo přistupujícího objektu (posun od nuly) a zda je přistupující objekt automaticky přistupující objekt. Automaticky přistupující objekt volá GetData, aby automaticky načtel data při volání metody MoveNext. Manuální přístupové objekty vyžadují, abyste explicitně načtli data. Pokud vytváříte vazbu na velké datové pole (například rastrový obrázek), které není vhodné k načtení pro každý záznam, použijte manuální přistupující objekt.
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()
};