Condividi tramite


Recordset (ODBC)

Aggiornamento: novembre 2007

L'argomento è relativo alle classi ODBC MFC.

Un oggetto CRecordset rappresenta un insieme di record selezionati da un'origine dati. I record possono provenire da:

  • una tabella

  • una query

  • una stored procedure che accede a una o più tabelle.

Un esempio di recordset basato su una tabella è rappresentato dall'insieme di tutti i clienti recuperati da una tabella Clienti. Una query potrebbe ad esempio restituire tutte le fatture di un determinato cliente. Un recordset basato su una stored procedure, definito talvolta query già definita, potrebbe ad esempio recuperare tutti i conti arretrati, richiamando una stored procedure nel database back-end. Un recordset è in grado di unire tramite join due o più tabelle presenti nella stessa origine dati, ma non tabelle con origini dati differenti.

Nota:

Per informazioni sulla derivazione delle classi di recordset con le procedure guidate, vedere Aggiunta di un consumer ODBC MFC e Supporto di database e Creazione guidata applicazioni MFC.

Nota:

Alcuni driver ODBC supportano le viste del database. In questo senso, una vista è una query originariamente creata mediante l'istruzione SQL CREATE VIEW. Le procedure guidate non supportano attualmente le viste. È tuttavia possibile scrivere il codice necessario per fornire questo supporto.

Proprietà del recordset

Tutti gli oggetti recordset condividono le proprietà descritte di seguito.

  • Se l'origine dati non è in sola lettura, è possibile impostare il recordset come aggiornabile, abilitato per le aggiunte o in sola lettura. Se il recordset è aggiornabile, è possibile scegliere i metodi di blocco ottimistico o pessimistico, a condizione che il driver fornisca il supporto appropriato per il blocco. Se l'origine dati è in sola lettura, il recordset è in sola lettura.

  • È possibile chiamare le funzioni membro per scorrere i record selezionati.

  • È possibile filtrare i record per applicare vincoli alla selezione dei record disponibili.

  • È possibile ordinare i record in ordine crescente o decrescente sulla base di una o più colonne.

  • È possibile applicare parametri al recordset per qualificarne la selezione in fase di esecuzione.

Snapshot e dynaset

Esistono due tipi principali di recordset: gli snapshot e i dynaset. Entrambi i tipi sono supportati dalla classe CRecordset e condividono le caratteristiche comuni a tutti i recordset. Ciascuno di essi tuttavia estende le funzionalità comuni in base alle proprie caratteristiche intrinseche. Gli snapshot forniscono una visualizzazione statica dei dati e risultano utili per i report e altre situazioni in cui si desidera una visualizzazione specifica dei dati in un determinato momento. I dynaset risultano utili quando si desidera visualizzare nel recordset gli aggiornamenti effettuati da altri utenti, senza dover aggiornare o ripetere una query del recordset. Gli snapshot e i dynaset possono essere aggiornabili o in sola lettura. Per visualizzare i record aggiunti o eliminati da altri utenti, chiamare CRecordset::Requery.

CRecordset consente inoltre di utilizzare altri due tipi di recordset: i recordset dinamici e quelli forward-only. I recordset dinamici sono simili ai dynaset, tuttavia riflettono tutti i record aggiunti o eliminati senza chiamare CRecordset::Requery. Per questa ragione, in genere i recordset dinamici risultano dispendiosi in termini di tempo di elaborazione nel DBMS e non sono supportati da molti driver ODBC. Al contrario, i recordset di tipo forward-only forniscono il metodo più efficace di accesso ai dati per i recordset che non richiedono aggiornamenti o lo scorrimento indietro. È possibile, ad esempio, utilizzare un recordset forward-only per trasferire i dati da un'origine dati a un'altra, eseguendo solo lo scorrimento in avanti. Per utilizzare un recordset di tipo forward-only, è necessario eseguire entrambe le operazioni riportate di seguito.

  • Passare l'opzione CRecordset::forwardOnly come parametro nOpenType della funzione membro Open.

  • Specificare CRecordset::readOnly nel parametro dwOptions della funzione membro Open.

    Nota:

    Per informazioni sui requisiti del driver ODBC per il supporto dei dynaset, vedere ODBC. Per un elenco dei driver ODBC inclusi in questa versione di Visual C++ e per informazioni sulla possibilità di ottenere driver aggiuntivi, vedere Elenco dei driver ODBC.

Recordset

Per ogni specifica tabella, visualizzazione o stored procedure a cui si desidera accedere viene in genere definita una classe derivata da CRecordset. L'unica eccezione è costituita dal join di database, in cui un recordset rappresenta le colonne di due o più tabelle. Quando si deriva una classe di recordset, viene attivato il meccanismo RFX (Record Field Exchange, trasferimento di campi di record) o il meccanismo RFX di massa (Bulk Record Field Exchange, trasferimento di massa di campi di record), simile al meccanismo DDX (Dialog Data Exchange). I meccanismi RFX e RFX di massa semplificano il trasferimento di dati dall'origine dati al recordset. RFX consente inoltre di trasferire i dati dal recordset all'origine dati. Per ulteriori informazioni, vedere Trasferimento di campi di record (RFX) e Recordset: recupero di massa di record (ODBC).

Un oggetto recordset consente di accedere a tutti i record selezionati. È necessario scorrere la maggior parte dei record selezionati mediante le funzioni membro di CRecordset, quali MoveNext e MovePrev. Un oggetto recordset rappresenta, in un determinato momento, solo uno dei record selezionati, ovvero il record corrente. È possibile esaminare i campi del record corrente dichiarando le variabili membro delle classi del recordset corrispondenti alle colonne della tabella o dei record risultanti dalla query del database. Per informazioni sui membri dati dei recordset, vedere Recordset: architettura (ODBC).

Negli argomenti riportati di seguito vengono fornite informazioni dettagliate sull'utilizzo degli oggetti recordset. Gli argomenti sono elencati in categorie funzionali e disposti in modo da consentirne la lettura sequenziale.

Argomenti relativi alle operazioni di apertura, lettura e chiusura dei recordset

Argomenti relativi alle operazioni di modifica dei recordset

Argomenti relativi a tecniche più avanzate

Argomenti relativi al funzionamento dei recordset

Vedere anche

Attività

Aggiunta di un consumer ODBC MFC

Concetti

Open Database Connectivity (ODBC)

Transazione (ODBC)