CRecordset::GetFieldValue
Načte data pole v aktuálním záznamu.
void GetFieldValue(
LPCTSTR lpszName,
CDBVariant& varValue,
short nFieldType = DEFAULT_FIELD_TYPE
);
void GetFieldValue(
short nIndex,
CDBVariant& varValue,
short nFieldType = DEFAULT_FIELD_TYPE
);
void GetFieldValue(
short nIndex,
CStringA& strValue
);
void GetFieldValue(
short nIndex,
CStringW& strValue
);
Parametry
lpszName
Název pole.varValue
Odkaz na CDBVariant objekt, který bude ukládat hodnotu pole.nFieldType
ODBC c datový typ pole.Pomocí výchozí hodnoty DEFAULT_FIELD_TYPE, vynutí GetFieldValue k určení typu c data z datového typu SQL založené na tabulce.Jinak můžete zadat data přímo zadejte nebo vyberte typ dat kompatibilní; Můžete například uložit libovolný typ dat do SQL_C_CHAR.Typ dat c
Typ dat 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_FLOATSQL_DOUBLE
SQL_C_TIMESTAMP
SQL_DATESQL_TIMESQL_TIMESTAMP
SQL_C_CHAR
SQL_NUMERICSQL_DECIMALSQL_BIGINTSQL_CHARSQL_VARCHARSQL_LONGVARCHAR
SQL_C_BINARY
SQL_BINARYSQL_VARBINARYSQL_LONGVARBINARY
Další informace o typech dat ODBC naleznete v tématech "Typů dat SQL" a "C datové typy" v dodatku d .
nIndex
Z nuly vycházející index pole.strValue
Odkaz na CString objekt, který uloží hodnotu pole převést na text bez ohledu na typ dat.
Poznámky
Pole můžete vyhledávat podle názvu nebo podle indexu.Hodnota pole lze uložit do buď CDBVariant objektu nebo CString objektu.
Pokud provádění hromadných řádek načítání aktuálního záznamu je vždy umístěn na první záznam v sadu řádků.Použití GetFieldValue na záznamu v rámci dané sady řádků musí nejprve volejte SetRowsetCursorPosition členské funkce přesunout kurzor do řádku požadované v rámci této sady řádků.Potom voláním GetFieldValue pro tento řádek.Implementovat načítání hromadné řádku, je nutné zadat CRecordset::useMultiRowFetch možnost dwOptions parametr v otevřených členské funkce.
Můžete použít GetFieldValue dynamicky načítat pole při běhu spíše než staticky je vazba v době návrhu.Například deklarujete objektu recordset přímo z CRecordset , je nutné použít GetFieldValue k načtení dat pole; pole záznamu exchange (RFX) nebo hromadné pole záznamu exchange (hromadné RFX), není implementována.
[!POZNÁMKA]
Pokud deklarujete objektu recordset bez vyplývající z CRecordset , nemají Knihovna kurzorů ODBC načten.Knihovna kurzorů vyžaduje, aby záznamů alespoň jeden sloupec vázaného; však při použití CRecordset přímo, jsou vázány žádné sloupce.Funkce členů CDatabase::OpenEx a CDatabase::Open řídit, zda bude načtena Knihovna kurzorů.
GetFieldValuevolání funkce rozhraní API ODBC Funkce SQLGetData.Pokud ovladač vyprodukuje hodnotu SQL_NO_TOTAL pro skutečná délka hodnoty pole GetFieldValue vyvolá výjimku.Další informace o Funkce SQLGetData, najdete .
Výjimky
Tuto metodu lze vyvolávají výjimky typu CDBException * a CMemoryException* .
Příklad
Následující ukázkový kód ilustruje volání GetFieldValue pro objekt recordset ohlášená přímo z CRecordset .
// Create and open a database object;
// do not load the cursor library
CDatabase db;
db.OpenEx(NULL, CDatabase::forceOdbcDialog);
// Create and open a recordset object
// directly from CRecordset. Note that a
// table must exist in a connected database.
// Use forwardOnly type recordset for best
// performance, since only MoveNext is required
CRecordset rs(&db);
rs.Open(CRecordset::forwardOnly, _T("SELECT * FROM Customer"));
// Create a CDBVariant object to
// store field data
CDBVariant varValue;
// Loop through the recordset,
// using GetFieldValue and
// GetODBCFieldCount to retrieve
// data in all columns
short nFields = rs.GetODBCFieldCount();
while(!rs.IsEOF())
{
for(short index = 0; index < nFields; index++)
{
rs.GetFieldValue(index, varValue);
// do something with varValue
}
rs.MoveNext();
}
rs.Close();
db.Close();
[!POZNÁMKA]
Na rozdíl od třídy DAO CDaoRecordset , CRecordset nemá SetFieldValue členské funkce.Pokud vytvoříte objekt přímo z CRecordset , je skutečně jen pro čtení.
Další informace o načítání řádků hromadného naleznete v článku záznamů: načítání záznamů hromadné (ODBC).
Požadavky
Záhlaví: afxdb.h