Condividi tramite


Record utente

Aggiornamento: novembre 2007

Nel record utente vengono forniti il codice e la struttura dati che rappresenta i dati della colonna di un rowset. Un record utente può essere creato in fase di compilazione o in fase di esecuzione. Supponendo che venga specificato il nome provider [nome breve] "MyProvider", quando si crea un provider mediante la Creazione guidata provider OLE DB ATL, viene creato un record utente predefinito con codice analogo a quello riportato di seguito:

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()

};

I modelli provider OLE DB gestiscono tutte le specifiche OLE DB relative alle interazioni con il client. Per acquisire i dati delle colonne necessari per una risposta, il provider chiama la funzione GetColumnInfo, che è necessario inserire nel record utente. È possibile eseguire l'override esplicito di GetColumnInfo nel record utente, ad esempio dichiarandolo nel file H come illustrato di seguito:

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

Questa dichiarazione equivale a:

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

È inoltre necessario implementare GetColumnInfo nel file CPP del record utente.

Le macro PROVIDER_COLUMN_MAP possono fornire un valido aiuto per la creazione di una funzione GetColumnInfo:

  • BEGIN_PROVIDER_COLUMN_MAP definisce il prototipo di funzione e una matrice statica di strutture ATLCOLUMNINFO.

  • PROVIDER_COLUMN_ENTRY definisce e inizializza un'unica ATLCOLUMNINFO.

  • END_PROVIDER_COLUMN_MAP chiude la matrice e la funzione. Inserisce inoltre il numero degli elementi della matrice nel parametro pcCols.

Quando si crea un record utente in fase di esecuzione, GetColumnInfo utilizza il parametro pThis per ricevere un puntatore a un'istanza di rowset o di comando. Gli oggetti Command e Rowset devono supportare l'interfaccia IColumnsInfo, in modo che sia possibile ottenere informazioni sulle colonne da questo puntatore.

CommandClass e RowsetClass sono il comando e il rowset che utilizzano il record utente.

Per un esempio più dettagliato relativo all'override di GetColumnInfo in un record utente, vedere Determinazione dinamica delle colonne restituite al consumer.

Vedere anche

Concetti

Architettura dei modelli provider OLE DB