Determinazione del tipo di funzione di accesso da utilizzare
È possibile determinare i tipi di dati di un rowset in fase di compilazione o in fase di esecuzione.
Per determinare i tipi di dati in fase di compilazione, utilizzare una funzione di accesso statica, ad esempio CAccessor. È possibile determinare i tipi di dati manualmente o tramite la Creazione guidata consumer OLE DB ATL.
Per determinare i tipi di dati in fase di esecuzione, utilizzare una funzione di accesso dinamica, come CDynamicAccessor o le relative funzioni figlio, oppure manuale, ad esempio CManualAccessor. In questi casi è possibile chiamare GetColumnInfo sul rowset per recuperare le informazioni di associazione delle colonne, dalle quali è possibile determinare i tipi.
Nella tabella riportata di seguito sono elencati i tipi di funzioni di accesso dei modelli consumer. Ogni funzione di accesso presenta vantaggi e svantaggi specifici. A seconda della situazione, un solo tipo di funzione di accesso risulta adatto.
Classe della funzione di accesso |
Associazione |
Parametro |
Commento |
---|---|---|---|
CAccessor |
Crea un record utente con le macro COLUMN_ENTRY. Le macro associano un membro dati del record alla funzione di accesso. In seguito alla creazione del rowset, non è più possibile annullare l'associazione delle colonne. |
Sì, tramite una voce della macro PARAM_MAP. Una volta eseguita, non è possibile annullare l'associazione dei parametri. |
Funzione di accesso più rapida grazie alla quantità limitata di codice. |
CDynamicAccessor |
Automatica. |
No. |
Utile se non si conosce il tipo di dati di un rowset. |
CDynamicParameterAccessor |
Automatica, ma è possibile eseguirne l'override. |
Sì, se il provider supporta ICommandWithParameters. I parametri vengono associati automaticamente. |
Più lenta di CDynamicAccessor, ma utile per chiamare stored procedure generiche. |
CDynamicStringAccessor[A,W] |
Automatica. |
No. |
Recupera i dati dall'archivio dati sotto forma di stringa. |
CManualAccessor |
Manuale tramite AddBindEntry. |
Associazione manuale tramite AddParameterEntry. |
Molto veloce, in quanto i parametri e le colonne vengono associati una sola volta. Il programmatore determina il tipo di dati da utilizzare. Per un esempio, vedere DBVIEWER. Richiede una quantità di codice superiore rispetto a CDynamicAccessor o CAccessor. Analoga alla chiamata diretta di OLE DB. |
CXMLAccessor |
Automatica. |
No. |
Recupera i dati dall'archivio dati sotto forma di stringa e li formatta come dati XML. |