Recordset: creazione e chiusura di recordset (ODBC)

Nota

La Creazione guidata consumer ODBC MFC non è disponibile in Visual Studio 2019 e versioni successive. È comunque possibile creare manualmente un consumer.

Le informazioni contenute in questo argomento sono valide per le classi ODBC MFC.

Per usare un recordset, costruire un oggetto recordset e quindi chiamare la relativa funzione membro Open per eseguire la query del recordset e selezionare i record. Al termine del recordset, chiudere ed eliminare definitivamente l'oggetto.

In questo argomento:

Creazione di recordset in fase di esecuzione

Prima di poter creare oggetti recordset in un programma, in genere si scrivono le classi recordset specifiche dell'applicazione. Per altre informazioni su questo passaggio preliminare, vedere Aggiunta di un consumer ODBC MFC.

Aprire un oggetto dynaset o snapshot quando è necessario selezionare record da un'origine dati. Il tipo di oggetto da creare dipende dalle operazioni che è necessario eseguire con i dati nell'applicazione e dagli elementi supportati dal driver ODBC. Per altre informazioni, vedere Dynaset e Snapshot.

Per aprire un recordset

  1. Costruire un oggetto della classe derivata da CRecordset.

    È possibile costruire l'oggetto nell'heap o nello stack frame di una funzione.

  2. Facoltativamente, è possibile modificare il comportamento del recordset predefinito. Per le opzioni disponibili, vedere Impostazione delle opzioni del recordset.

  3. Chiamare la funzione membro Open dell'oggetto.

Nel costruttore, passare un puntatore a un oggetto CDatabase o passare NULL per usare un oggetto di database temporaneo che viene costruito e aperto dal framework in base alla stringa di connessione restituita dalla funzione membro GetDefaultConnect. L'oggetto CDatabase potrebbe essere già connesso a un'origine dati.

La chiamata a Open usa SQL per selezionare i record dall'origine dati. Il primo record selezionato (se presente) è il record corrente. I valori dei campi di questo record sono archiviati nei membri dati di campo dell'oggetto recordset. Se sono stati selezionati record, le funzioni membro IsBOF e IsEOF restituiscono 0.

Nella chiamata Open è possibile:

  • Specificare se il recordset è un dynaset o uno snapshot. Per impostazione predefinita, i recordset vengono aperti come snapshot. In alternativa, è possibile specificare un recordset forward-only, che consente solo lo scorrimento in avanti, un record alla volta.

    Per impostazione predefinita, un recordset usa il tipo predefinito archiviato nel membro dati m_nDefaultType di CRecordset. Le procedure guidate scrivono il codice per inizializzare m_nDefaultType per il tipo di recordset scelto nella procedura guidata. Invece di accettare questa impostazione predefinita, è possibile sostituire un altro tipo di recordset.

  • Specificare una stringa per sostituire l'istruzione SQL SELECT predefinita costruita dal recordset.

  • Specificare se il recordset è di sola lettura o di solo accodamento. Per impostazione predefinita, i recordset consentono un aggiornamento completo, ma è possibile limitare questo comportamento solo all'aggiunta di nuovi record oppure disattivare tutti gli aggiornamenti.

Nell'esempio seguente viene illustrato come aprire un oggetto snapshot di sola lettura della classe CStudentSet, una classe specifica dell'applicazione:

// Construct the snapshot object
CStudentSet rsStudent( NULL );
// Set options if desired, then open the recordset
if(!rsStudent.Open(CRecordset::snapshot, NULL, CRecordset::readOnly))
    return FALSE;
// Use the snapshot to operate on its records...

Dopo aver chiamato Open, usare le funzioni membro e i membri dati dell'oggetto per lavorare con i record. In alcuni casi, può essere necessario ripetere una query o aggiornare il recordset in modo da includere le modifiche apportate nell'origine dati. Per altre informazioni, vedere Recordset: Requerying a Recordset (ODBC).

Suggerimento

La stringa di connessione usata durante lo sviluppo può non essere la stessa stringa di connessione necessaria per gli utenti finali. Per idee sulla generalizzazione dell'applicazione in questo senso, vedere Origine dati: Gestione delle connessioni (ODBC).

Impostazione delle opzioni dell'oggetto Recordset

Dopo la costruzione dell'oggetto recordset ma prima della chiamata a Open per selezionare i record, è possibile impostare alcune opzioni per controllare il comportamento del recordset. Per tutti i recordset, è possibile:

  • Specificare un filtro per vincolare la selezione dei record.

  • Specificare un criterio di ordinamento per i record.

  • Specificare parametri in modo da selezionare i record tramite informazioni recuperate o calcolate in fase di esecuzione.

Se le condizioni lo richiedono, è anche possibile impostare l'opzione seguente:

  • Se il recordset è aggiornabile e supporta le opzioni di blocco, specificare il metodo di blocco usato per gli aggiornamenti.

Nota

Per influire sulla selezione dei record, è necessario impostare queste opzioni prima di chiamare la funzione membro Open.

Chiusura di un oggetto Recordset

Al termine del recordset, è necessario eliminarlo e deallocare la relativa memoria.

Per chiudere un recordset

  1. Chiamare la relativa funzione membro Close.

  2. Eliminare definitivamente l'oggetto recordset.

    Se è stato dichiarato nello stack frame di una funzione, l'oggetto viene eliminato automaticamente quando esce dall'ambito. In caso contrario, usare l'operatore delete .

Close libera l'handle HSTMT del recordset. Non elimina definitivamente l'oggetto C++.

Vedi anche

Recordset (ODBC)
Recordset: scorrimento (ODBC)
Recordset: aggiunta, aggiornamento ed eliminazione di record (ODBC)