public static void GetFieldValue (LPCTSTR lpszNameCDBVariantamp; varValuebrevinFieldType= DEF&AULT_FIELD_TYPE);
gettare (CDBException, CMemoryException);
public static void GetFieldValue (breve nIndexCDBVariantamp; varValuebrevinFieldType= DEF&AULT_FIELD_TYPE);
gettare (CDBException, CMemoryException);
public st&atic void GetFieldValue (LPCTSTR lpszNameCStringamp;strValue );
tiro (CDBException, CMemoryException);
public st&atic void GetFieldValue (breve nIndexCStringamp;strValue );
tiro (CDBException, CMemoryException);
Parametri
lpszName
Il nome di un campo.
varValue
Un riferimento a un oggetto CDBVariant che memorizza il valore del campo.
nFieldType
Il tipo di dati ODBC C del campo. Utilizzando il valore predefinito, DEFAULT_FIELD_TYPE, forze GetFieldValue per determinare il tipo di dati c dal tipo di dati SQL, sulla base della tabella seguente. In caso contrario, è possibile specificare i dati digitare direttamente oppure scegliere un tipo di dati compatibile; ad esempio, è possibile memorizzare qualsiasi tipo di dati in SQL_C_CHAR.
| Tipo di dati c | Tipo di dati SQL |
| SQL_C_BIT | SQL_BIT |
| SQL_C_UTINYINT | SQL_TINYINT |
| SQL_C_SSHORT | SQL_SMALLINT |
| SQL_C_SLONG | SQL_INTEGER |
| SQL_C_FLOAT | SQL_REAL |
| SQL_C_DOUBLE | SQL_FLOAT SQL_DOUBLE |
| SQL_C_TIMESTAMP | SQL_DATE SQL_TIME SQL_TIMESTAMP |
| SQL_C_CHAR | SQL_NUMERIC SQL_DECIMAL SQL_BIGINT SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR |
| SQL_C_BINARY | SQL_BINARY SQL_VARBINARY SQL_LONGVARBINARY |
Per ulteriori informazioni sui tipi di dati ODBC, vedere gli argomenti "Tipi di dati SQL" e "C i tipi di dati" nell'appendice d il riferimento di ODBC SDK Programmer.
nIndex
L'indice del campo.
strValue
Un riferimento a un oggetto CString che memorizza il valore del campo convertito in testo, indipendentemente dal tipo di dati del campo.
Osservazioni
Chiamare questa funzione membro per recuperare i dati di campo del record corrente. È possibile cercare un campo per nome o per indice. È possibile memorizzare il valore del campo in un oggetto CDBVariant o un oggetto CString.
Se è stato implementato il recupero di massa di fila, il record corrente viene sempre posizionato sul primo record in un set di righe. Per utilizzare GetFieldValue su un record all'interno di un determinato set di righe, è necessario innanzitutto chiamare la funzione membro SetRowsetCursorPosition per spostare il cursore sulla riga desiderato all'interno di tale set di righe. Quindi chiamare GetFieldValue per tale riga. Per implementare il recupero di massa di righe, è necessario specificare l'opzione CRecordset:: useMultiRowFetch del parametro dwOptions nella funzione membro Open.
È possibile utilizzare GetFieldValue per recuperare in modo dinamico i campi alla fase di esecuzione, piuttosto che statico associandole in fase di progettazione. Ad esempio, se si hanno dichiarato un oggetto recordset direttamente da CRecordset, è necessario utilizzare GetFieldValue per recuperare i dati del campo; campi di record (RFX) o alla rinfusa exchange campi di record (RFX di massa), non è stato implementato.
&Notanbsp; Se si dichiara un oggetto recordset senza derivanti da CRecordset, non hanno caricato la libreria di cursori ODBC. La libreria di cursori richiede che il recordset abbiano almeno una colonna associata; Tuttavia, quando si utilizza direttamente CRecordset , nessuna delle colonne sono vincolata. Il membro funzioni controllo CDatabase::OpenEx e CDatabase:: Open , se verrà caricata la libreria di cursori.
GetFieldValue chiama la funzione API ODBC SQLGetData. Se il driver restituisce il valore SQL_NO_TOTAL per la durata effettiva del valore del campo, GetFieldValue genera un'eccezione. Per ulteriori informazioni su SQLGetData, vedere ODBC SDK Programmer di riferimento.
Esempio
Nell'esempio di codice seguente vengono illustrate le chiamate a GetFieldValue per un oggetto recordset dichiarato direttamente da CRecordset.
/ / Creare e aprire un oggetto di database;
/ / non caricare la libreria di cursori
Db CDatabase;
DB.OpenEx (NULL, CDatabase::forceOdbcDialog);
/ / Creare e aprire un oggetto recordset
/ / direttamente da CRecordset. Si noti che un
/ / tabella deve essere presente in un database collegato.
/ / Utilizzare recordset di tipo forwardOnly per meglio
/ / prestazioni, poiché solo MoveNext è necessaria
CRecordset rs (amp; db);
RS.Aprire (CRecordset::forwardOnly,
T ("Seleziona * da SomeTable"));
/ / Crea un oggetto CDBVariant per
/ / store campo dati
CDBVariant varValue;
/ / Loop through del recordset,
/ / utilizzare GetFieldValue e
/ / GetODBCFieldCount per recuperare
/ / dati in tutte le colonne
breve nCampi = rs.GetODBCFieldCount ();
mentre (! rs.IsEOF ())
{
per (breve indice = 0; indice < nCampi; indice + +)
{
RS.GetFieldValue (index, varValue);
/ / fare qualcosa con varValue
}
RS.MoveNext ();
}
RS.Close ();
DB.(Chiudi)
&Notanbsp; A differenza della classe DAO CDaoRecordset, CRecordset non dispone di una funzione membro SetFieldValue . Se si crea un oggetto direttamente da CRecordset, esso è in sola lettura.
Per ulteriori informazioni sul recupero di massa di righe, vedere l'articolo Recordset: recupero Records in Bulk (ODBC) nel manuale del programmatore di Visual C++.
Pa&noramica CRecordset |nbsp; Membri della classe | Gerarchia Chart
Vedere a&nchenbsp;CRecordset::DoFieldExchange, CRecordset::DoBulkFieldExchange, CRecordset::GetODBCFieldCount, CRecordset::GetODBCFieldInfo, CRecordset::SetRowsetCursorPosition