Funzioni di accesso e rowset
Per impostare e recuperare dati, i modelli OLE DB utilizzano una funzione di accesso e un rowset tramite la classe CAccessorRowset. Questa classe è in grado di gestire più funzioni di accesso di tipi diversi.
Tipi di funzioni di accesso
Tutte le funzioni di accesso derivano da CAccessorBase. CAccessorBase fornisce sia l'associazione di parametro che di colonna.
Nella figura riportata di seguito sono illustrati i tipi di funzioni di accesso.
Classi delle funzioni di accesso
CAccessor Utilizzare questa funzione di accesso quando si conosce la struttura dell'origine del database in fase di progettazione. CAccessor associa staticamente all'origine dati un record del database che contiene il buffer.
CDynamicAccessor Utilizzare questa funzione di accesso quando non si conosce la struttura dell'origine del database in fase di progettazione. CDynamicAccessor chiama IColumnsInfo::GetColumnInfo per ottenere le informazioni sulle colonne del database. Questa classe crea e gestisce una funzione di accesso e il buffer.
CDynamicParameterAccessor Funzione di accesso da utilizzare per gestire tipi di comandi sconosciuti. Quando si preparano i comandi, CDynamicParameterAccessor è in grado di ottenere informazioni sui parametri dall'interfaccia ICommandWithParameters, se il provider supporta ICommandWithParameters.
CDynamicStringAccessor, CDynamicStringAccessorA e CDynamicStringAccessorW Utilizzare queste classi quando non si ha alcuna conoscenza dello schema del database. CDynamicStringAccessorA recupera dati come stringhe ANSI; CDynamicStringAccessorW recupera dati come stringhe Unicode.
CManualAccessor Con questa classe è possibile utilizzare tutti i tipi di dati, se il provider è in grado di effettuare la conversione dei tipi. Questa classe gestisce sia le colonne di risultati che i parametri dei comandi.
Nella tabella riportata di seguito sono riepilogate le caratteristiche di supporto delle funzioni di accesso dei modelli OLE DB.
Tipo di funzione di accesso |
Dynamic |
Gestione parametri |
Buffer |
Più funzioni di accesso |
---|---|---|---|---|
CAccessor |
No |
Sì |
Utente |
Sì |
CDynamicAccessor |
Sì |
No |
Modelli OLE DB |
No |
CDynamicParameterAccessor |
Sì |
Sì |
Modelli OLE DB |
No |
CDynamicStringAccessor[A,W] |
Sì |
No |
Modelli OLE DB |
No |
CManualAccessor |
Sì |
Sì |
Utente |
Sì |
Tipi di rowset
I modelli OLE DB supportano tre tipi di rowset, come si può vedere nella figura precedente: i rowset singoli, implementati da CRowset, i rowset di massa, implementati da CBulkRowset, e i rowset matrice, implementati da CArrayRowset. I rowset singoli recuperano un solo handle di riga quando si chiama MoveNext. I rowset di massa possono recuperare più handle di riga. I rowset matrice sono rowset a cui è possibile accedere tramite la sintassi delle matrici.
Nella figura riportata di seguito sono illustrati i tipi di rowset.
Classi dei rowset
I rowset dello schema non accedono ai dati nell'archivio dati, ma alle informazioni sull'archivio dati stesso, denominate metadati. I rowset dello schema vengono in genere utilizzati in situazioni in cui la struttura del database non è conosciuta in fase di compilazione e deve essere recuperata in fase di esecuzione.