void GetFieldValue (LPCTSTR LpszNameCDBVariantamp; varValuekurzenFieldType= DEF&AULT_FIELD_TYPE);
Werfen Sie (CDBException, CMemoryException);
void GetFieldValue (kurze nIndexCDBVariantamp; varValuekurzenFieldType= DEF&AULT_FIELD_TYPE);
Werfen Sie (CDBException, CMemoryException);
void GetFieldV&alue (LPCTSTR LpszNameCStringamp;strValue );
Werfen Sie (CDBException, CMemoryException);
void GetFieldV&alue (kurze nIndexCStringamp;strValue );
Werfen Sie (CDBException, CMemoryException);
Parameter
lpszName
Der Name eines Feldes.
VarValue
Ein Verweis auf ein CDBVariant -Objekt, das den Wert des Felds gespeichert werden.
nFieldType
Der ODBC C-Datentyp des Feldes. Mit dem Standardwert, DEFAULT_FIELD_TYPE, zwingt GetFieldValue den C-Datentyp des SQL-Datentyps, basierend auf den in der folgenden Tabelle bestimmen. Andernfalls können Sie die Daten direkt eingeben oder wählen Sie einen kompatiblen Datentyp; Beispielsweise können Sie einen beliebigen Datentyp in SQL_C_CHAR speichern.
| C-Datentyp | SQL-Datentyp |
| 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 |
Weitere Informationen über ODBC-Datentypen finden Sie unter die Themen "SQL Data Types" und "C-Datentypen" im Anhang D von ODBC SDK Programmer's Reference.
nIndex
Der nullbasierte Index des Feldes.
strValue
Ein Verweis auf ein CString -Objekt, das den Wert des Felds konvertiert Text, unabhängig vom Datentyp des Feldes gespeichert werden.
Bemerkungen
Rufen Sie diese Memberfunktion um Felddaten im aktuellen Datensatz abzurufen. Sie können ein Feld entweder nach Namen oder nach Index nachschlagen. Sie können den Wert des Feldes in ein CDBVariant -Objekt oder ein CString -Objekt speichern.
Wenn Sie das gesammelte Abrufen von Zeilen implementiert haben, wird immer der aktuelle Datensatz auf den ersten Datensatz im Rowset positioniert. GetFieldValue auf einen Datensatz innerhalb eines bestimmten Rowsets verwenden, müssen Sie zunächst die SetRowsetCursorPosition -Memberfunktion auf, um den Cursor auf der gewünschten Zeile innerhalb dieses Rowset aufrufen. Dann rufen Sie GetFieldValue für diese Zeile. Um gesammelte implementieren, müssen Sie angeben, die Option übergeben im Parameter DwOptions der Open -Memberfunktion.
GetFieldValue können Sie um Felder dynamisch zur Laufzeit, anstatt sie zur Entwurfszeit statisch binden zu holen. Wenn Sie ein Recordsetobjekt direkt von CRecordsetdeklariert haben, müssen Sie beispielsweise GetFieldValue verwenden, um die Felddaten abzurufen; Datensatzfeldaustausch (RFX) oder Bulk-Datensatzfeldaustausch (Bulk-RFX), ist nicht implementiert.
Hinweis&Nbsp; Wenn Sie ein Recordset-Objekt deklarieren, ohne von CRecordsetableiten, müssen Sie nicht die ODBC-Cursorbibliothek geladen. Die Cursor-Bibliothek erfordert, dass das Recordset mindestens eine gebundene Spalte haben; jedoch wenn Sie CRecordset direkt verwenden, sind keine der Spalten gebunden. Die Memberfunktionen CDatabase:: OpenEx und CDatabase:: Kontrolle, ob die Cursorbibliothek geladen wird.
GetFieldValue Ruft die ODBC-API-Funktion SQLGetData. Wenn der Treiber den Wert SQL_NO_TOTAL für die tatsächliche Länge des Feldwerts ausgibt, auslöst GetFieldValue eine Ausnahme. Weitere Informationen über SQLGetDatafinden Sie in der ODBC SDK Programmer's Reference.
Beispiel
Der folgende Code veranschaulicht Aufrufe GetFieldValue für ein Recordset-Objekt deklariert direkt von CRecordset.
/ / Erstellen und Öffnen eines Datenbankobjekts;
/ / die Cursor-Bibliothek werden nicht geladen
CDatabase Db;
DB.OpenEx (NULL, CDatabase::forceOdbcDialog);
/ / Erstellen und öffnen ein Recordset-Objekts
/ / direkt von CRecordset. Beachten Sie, dass eine
/ / Tabelle muss in einer verbundenen Datenbank vorhanden.
/ / Use ForwardOnly Typ Recordset für die beste
/ / Leistung, da nur MoveNext erforderlich ist
CRecordset Rs (Amp; Db);
Rs.(CRecordset::forwardOnly, öffnen
_T ("wählen Sie * aus SomeTable"));
/ / Create ein CDBVariant-Objekt
/ / Speichern von Felddaten
CDBVariant VarValue;
/ / Schleife durch das Recordset,
/ / mit GetFieldValue und
/ / GetODBCFieldCount abrufen
/ / Daten in alle Spalten
kurze nFields = Rs.GetODBCFieldCount ();
während (! Rs.IsEOF ())
{
für (short Index = 0; index < nFields; Index ++)
{
Rs.GetFieldValue (Index, VarValue);
/ / do something with VarValue
}
Rs.MoveNext ();
}
Rs.(Schließen);
DB.(Schließen)
Hinweis&Nbsp; Im Gegensatz zur DAO-Klasse CDaoRecordsetbesitzt eine SetFieldValue -Memberfunktion CRecordset nicht. Wenn Sie ein Objekt direkt von CRecordseterstellen, ist es schreibgeschützt.
Weitere Informationen über gesammelte finden Sie im Artikel Recordset: Abrufen von Datensätzen in einer Sammeloperation (ODBC) im Visual C++ Programmer's Guide.
CRecordset Übersicht | Member der Klasse | Hierarchiediagramm
Siehe auch&Nbsp;CRecordset:: DoFieldExchange, CRecordset::DoBulkFieldExchange, CRecordset::GetODBCFieldCount, CRecordset::GetODBCFieldInfo, CRecordset::SetRowsetCursorPosition