Rekord użytkownika
Uwaga
Kreator dostawcy OLE DB ATL nie jest dostępny w programie Visual Studio 2019 i nowszych wersjach.
Rekord użytkownika zawiera kod i strukturę danych reprezentującą dane kolumn dla zestawu wierszy. Rekord użytkownika można utworzyć w czasie kompilacji lub w czasie wykonywania. Podczas tworzenia dostawcy przy użyciu Kreatora dostawcy OLE DB ATL kreator tworzy domyślny rekord użytkownika, który wygląda następująco (przy założeniu, że określono nazwę dostawcy [krótka nazwa] 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 dostawców OLE DB obsługują wszystkie szczegóły OLE DB dotyczące interakcji z klientem. Aby uzyskać dane kolumny potrzebne do odpowiedzi, dostawca wywołuje GetColumnInfo
funkcję, którą należy umieścić w rekordzie użytkownika. Możesz jawnie zastąpić GetColumnInfo
rekord użytkownika, na przykład deklarując go w pliku .h, jak pokazano poniżej:
template <class T>
static ATLCOLUMNINFO* GetColumnInfo(T* pThis, ULONG* pcCols)
To równa się:
static ATLCOLUMNINFO* GetColumnInfo(CommandClass* pThis, ULONG* pcCols)
static ATLCOLUMNINFO* GetColumnInfo(RowsetClass* pThis, ULONG* pcCols)
Następnie zaimplementuj GetColumnInfo
plik .cpp rekordu użytkownika.
Makra PROVIDER_COLUMN_MAP ułatwiają tworzenie GetColumnInfo
funkcji:
BEGIN_PROVIDER_COLUMN_MAP definiuje prototyp funkcji i statyczną tablicę
ATLCOLUMNINFO
struktur.PROVIDER_COLUMN_ENTRY definiuje i inicjuje pojedynczy
ATLCOLUMNINFO
element .END_PROVIDER_COLUMN_MAP zamyka tablicę i funkcję. Umieszcza również liczbę elementów tablicy w parametrze pcCols .
Gdy rekord użytkownika jest tworzony w czasie wykonywania, GetColumnInfo
używa parametru pThis
do odbierania wskaźnika do zestawu wierszy lub wystąpienia polecenia. Polecenia i zestawy wierszy muszą obsługiwać IColumnsInfo
interfejs, więc informacje o kolumnie można pobrać z tego wskaźnika.
CommandClass
i RowsetClass
to polecenie i zestaw wierszy używający rekordu użytkownika.
Aby uzyskać bardziej szczegółowy przykład zastępowania GetColumnInfo
rekordu użytkownika, zobacz Dynamiczne określanie kolumn zwróconych użytkownikowi.