CRecordset::GetFieldValue

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 ÜbersichtMember der Klasse | Hierarchiediagramm

Siehe auch&Nbsp;CRecordset:: DoFieldExchange, CRecordset::DoBulkFieldExchange, CRecordset::GetODBCFieldCount, CRecordset::GetODBCFieldInfo, CRecordset::SetRowsetCursorPosition

Index