Rekord użytkownika
Rekord użytkownika zawiera strukturę kodu i danych, która reprezentuje danych kolumny dla zestawu wierszy.Rekord użytkownika mogą być tworzone w czasie kompilacji lub w czasie wykonywania.Podczas tworzenia dostawcę przy użyciu biblioteki ATL OLE DB Provider kreatora, Kreator tworzy rekord użytkownika domyślnego, który wygląda następująco (przy założeniu, że określona nazwa dostawcy [nazwa krótka] z "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()
};
Szablony dostawca OLE DB obsługuje wszystkie OLE DB szczegóły dotyczące interakcji z klientem.Uzyskanie danych kolumny potrzebne na odpowiedź, dostawca wywołuje GetColumnInfo funkcja, która musi umieścić w rekordzie użytkownika.Można zastąpić jawnie GetColumnInfo w rekordzie użytkownika, na przykład poprzez uznanie go w pliku .h jak pokazano poniżej:
template <class T>
static ATLCOLUMNINFO* GetColumnInfo(T* pThis, ULONG* pcCols)
Jest to równoważne:
static ATLCOLUMNINFO* GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
static ATLCOLUMNINFO* GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)
Musi też implementować GetColumnInfo w pliku CPP rekordu użytkownika.
Makra PROVIDER_COLUMN_MAP pomoc w tworzeniu GetColumnInfo funkcji:
BEGIN_PROVIDER_COLUMN_MAP definiuje prototyp funkcji i statycznych tablica ATLCOLUMNINFO struktur.
PROVIDER_COLUMN_ENTRY definiuje i inicjuje pojedynczy ATLCOLUMNINFO.
END_PROVIDER_COLUMN_MAP zamyka tablicy i funkcji.Umieszcza on również liczba elementów tablicy do pcCols parametru.
Po utworzeniu rekordu użytkownika w czasie wykonywania, GetColumnInfo korzysta z pThis parametru, aby uzyskać wskaźnik do wystąpienia polecenia lub zestaw wierszy.Polecenia i zestawów wierszy musi obsługiwać IColumnsInfo interfejs, więc informacje o kolumnie można uzyskać z tego wskaźnika.
CommandClass i RowsetClass są polecenia i zestaw wierszy, które używają rekordu użytkownika.
Aby bardziej szczegółowy przykład sposobu zastąpienia GetColumnInfo w rekordzie użytkownika, zobacz Dynamicznie określenia kolumny zwracane do konsumenta,.