Condividi tramite


Recordset: architettura (ODBC)

L'argomento è relativo alle classi ODBC MFC.

In questo argomento vengono descritti i membri dati che costituiscono l'architettura di un oggetto recordset:

  • Membri dati di campo

  • Membri dati di parametro

  • Utilizzo di m_nFields e m_nParams

Nota

L'argomento è relativo agli oggetti derivati da CRecordset per cui il recupero di massa di righe non è ancora stato implementato. Qualora venga implementato il recupero di massa di righe, l'architettura sarà comunque simile. Per comprenderne le differenze, vedere Recordset: recupero di massa di record (ODBC).

Esempio di classe

Quando si utilizza la Creazione guidata consumer ODBC MFC dall'Aggiunta guidata classe per dichiarare una classe di recordset derivata da CRecordset, la classe risultante ha la struttura generica illustrata nella seguente classe semplice:

class CCourse : public CRecordset
{
public:
   CCourse(CDatabase* pDatabase = NULL);
   ...
   CString m_strCourseID;
   CString m_strCourseTitle;
   CString m_strIDParam;
};

All'inizio della classe, la procedura guidata scrive un insieme di membri dati di campo. Quando si crea la classe, è necessario specificare uno o più membri dati di campo. Se alla classe vengono assegnati parametri, come nel caso della classe di esempio (con il membro dati m_strIDParam), è necessario aggiungere manualmente i membri dati di parametro. La procedura guidata non supporta l'aggiunta di parametri a una classe.

Membri dati di campo

I membri dati di campo rappresentano gli elementi più importanti della classe recordset. Per ogni colonna selezionata dall'origine dati, la classe contiene un membro dati con il tipo di dati appropriato per la colonna specifica. La classe di esempio riportata all'inizio di questo argomento contiene due membri dati di campo, entrambi di tipo CString, denominati m_strCourseID e m_strCourseTitle.

Quando il recordset seleziona un insieme di record, il framework associa automaticamente ai membri dati di campo dell'oggetto le colonne del record corrente (dopo la chiamata a Open, il primo record è il record corrente). Il framework utilizza pertanto il membro dati di campo appropriato come buffer in cui memorizzare il contenuto di una colonna di record.

Quando si passa a un nuovo record, il framework utilizza i membri dati di campo per rappresentare il record corrente e li aggiorna sostituendo i valori del record precedente. I membri dati di campo vengono inoltre utilizzati per l'aggiornamento del record corrente e per l'aggiunta di nuovi record. Durante il processo di aggiornamento di un record è possibile specificare i valori di aggiornamento assegnando tali valori direttamente al membro o ai membri dati di campo appropriati.

Membri dati di parametro

Se alla classe vengono applicati dei parametri, in essa verranno inclusi uno o più membri dati di parametro. Una classe con parametri consente di basare una query del recordset su informazioni ottenute o calcolate in fase di esecuzione.

In genere, il parametro consente di limitare la selezione, come illustrato nell'esempio riportato di seguito. Sulla base della classe di esempio, riportata all'inizio di questo argomento, l'oggetto Recordset potrebbe eseguire l'istruzione SQL seguente:

SELECT CourseID, CourseTitle FROM Course WHERE CourseID = ?

"?" è un segnaposto per un valore di parametro specificato in fase di esecuzione. Quando si crea il recordset e si imposta il relativo membro dati m_strIDParam su MATH101, l'istruzione SQL effettiva per il recordset diventa:

SELECT CourseID, CourseTitle FROM Course WHERE CourseID = MATH101

Quando si definiscono i membri dati di parametro, vengono fornite al framework informazioni sui parametri nella stringa SQL. Il framework associa il parametro che indica a ODBC la posizione in cui recuperare i valori da sostituire al segnaposto. Nell'esempio il recordset risultante contiene solo il record della tabella Course con la colonna CourseID il cui valore è MATH101. Tutte le colonne di questo record sono selezionate. È possibile specificare un numero illimitato di parametri e segnaposti.

Nota

MFC non esegue alcuna operazione con i parametri, in particolare non effettua alcuna operazione di sostituzione di testo, bensì indica a ODBC la posizione in cui recuperare il parametro. ODBC recupera i dati ed effettua l'operazione di applicazione di parametri richiesta.

Nota

L'ordine dei parametri è importante. Per ulteriori informazioni sui parametri, vedere Recordset: applicazione di parametri a un recordset (ODBC).

Utilizzo di m_nFields e m_nParams

Quando si crea un costruttore per la classe tramite una procedura guidata, viene inizializzato anche il membro dati m_nFields, che specifica il numero di membri dati di campo inclusi nella classe. Se si aggiungono parametri alla classe, sarà necessario aggiungere anche un'inizializzazione per il membro dati m_nParams, che specifica il numero dei membri dati di parametro. Per utilizzare i membri dati, il framework richiede questi valori.

Per ulteriori informazioni ed esempi, vedere Trasferimento di campi di record: utilizzo di RFX.

Vedere anche

Concetti

Recordset (ODBC)

Recordset: dichiarazione di una classe per una tabella (ODBC)

Trasferimento di campi di record (RFX)