Sdílet prostřednictvím


Uživatelský záznam

Poznámka:

Průvodce zprostředkovatelem ATL OLE DB není v sadě Visual Studio 2019 a novější k dispozici.

Záznam uživatele poskytuje kód a datovou strukturu, která představuje data sloupce pro sadu řádků. Záznam uživatele lze vytvořit v době kompilace nebo v době běhu. Když vytvoříte zprostředkovatele pomocí Průvodce zprostředkovatelem ATL OLE DB, průvodce vytvoří výchozí záznam uživatele, který vypadá takto (za předpokladu, že jste zadali název zprostředkovatele [krátký název] MyProvider):

class CWindowsFile:
   public WIN32_FIND_DATA
{
public:
  
BEGIN_PROVIDER_COLUMN_MAP(CMyProviderWindowsFile)
   PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes)
   PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh)
   PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow)
   PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName)
   PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()
  
};

Šablony zprostředkovatele OLE DB zpracovávají všechna specifika OLE DB při interakci s klientem. Pokud chcete získat data sloupce potřebná pro odpověď, poskytovatel zavolá GetColumnInfo funkci, kterou musíte umístit do záznamu uživatele. Záznam uživatele můžete explicitně přepsat GetColumnInfo tak, že ho například deklarujete v souboru .h, jak je znázorněno tady:

template <class T>
static ATLCOLUMNINFO* GetColumnInfo(T* pThis, ULONG* pcCols)

To odpovídá:

static ATLCOLUMNINFO* GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
static ATLCOLUMNINFO* GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)

Pak implementujte GetColumnInfo do souboru .cpp záznamu uživatele.

Makra PROVIDER_COLUMN_MAP pomáhají při vytváření GetColumnInfo funkce:

  • BEGIN_PROVIDER_COLUMN_MAP definuje prototyp funkce a statické pole ATLCOLUMNINFO struktur.

  • PROVIDER_COLUMN_ENTRY definuje a inicializuje jeden ATLCOLUMNINFO.

  • END_PROVIDER_COLUMN_MAP zavře pole a funkci. Umístí také počet prvků pole do parametru pcCols .

Při vytvoření záznamu uživatele za běhu GetColumnInfo pomocí parametru pThis obdrží ukazatel na sadu řádků nebo instanci příkazu. Příkazy a sady řádků musí podporovat IColumnsInfo rozhraní, takže informace o sloupci mohou být převzaty z tohoto ukazatele.

CommandClass a RowsetClass jedná se o příkaz a sadu řádků, které používají záznam uživatele.

Podrobnější příklad přepsání GetColumnInfo v záznamu uživatele najdete v tématu Dynamické určování sloupců vrácených příjemci.

Viz také

Architektura šablon zprostředkovatele OLE DB