CRecordset::GetFieldValue
Извлекает данные полей в текущей записи.
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
);
lpszName
Имя поля.varValue
Ссылка на объект CDBVariant, который будет храниться значение поля.nFieldType
Тип данных ODBC C поля.Значение по умолчанию DEFAULT_FIELD_TYPE, усилия GetFieldValue для указания типа данных c в типы данных SQL согласно следующей таблице.В противном случае можно указать тип данных непосредственно или выбрать совместимый тип данных. например, можно хранить любой тип данных в SQL_C_CHAR.Тип данных C
Тип данных 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
Дополнительные сведения о типах данных ODBC см. в разделах "типы данных SQL" и "типы данных c D" в приложения Windows SDK.
nIndex
Индекс, начинающийся с нуля поля.strValue
Ссылка на объект CString, который будет храниться значение поля преобразовала для отправки СМС, вне зависимости от типа данных поля.
Можно найти поле по имени или индексу.Можно сохранить значение полей в объекте CDBVariant или объекте CString.
Если реализован bulk строку выборку, то текущая запись всегда располагается на первую запись в наборе строк.Для использования GetFieldValue записи в пределах заданного набора строк, необходимо сначала вызвать функцию-член SetRowsetCursorPosition перемещение курсора к требуемой строке в пределах этого набора строк.Затем вызовите GetFieldValue для этой строки.Для реализации bulk строку выборка, необходимо указать параметр CRecordset::useMultiRowFetch параметра dwOptions в функции-члене Открытие.
Можно использовать GetFieldValue динамически для выборки поля во время выполнения, а не статической привязке их во время разработки.Например, если объявляли объект набора записей непосредственно из CRecordset, необходимо использовать GetFieldValue для получения данных поля. обмен полями записей (bulk RFX) или обмен полями записи (bulk RFX), не реализованы.
Примечание |
---|
Если объявляется объект набора записей без наследования от CRecordset, не имеющих библиотека курсоров ODBC загружен.Библиотека курсоров требуются, что набор записей содержит по крайней мере один связанный столбец; однако при использовании CRecordset прямо, ни один из столбцов привязатьы.Функции-члены CDatabase::OpenEx и управление CDatabase::Open будет загружена ли библиотека курсоров. |
GetFieldValue вызывает api-функцию ODBC SQLGetData.Если драйвер выводит значение SQL_NO_TOTAL фактической длины значения поля, GetFieldValue вызывает исключение.Дополнительные сведения о SQLGetData см. в разделе Windows SDK.
Этот метод может создавать исключения типа CDBException* и CMemoryException*.
Следующий образец кода показывает вызовы GetFieldValue для объекта набора записей объявленного непосредственно из 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();
Примечание |
---|
В отличие от класса CDaoRecordset DAO CRecordset отсутствует функция-член SetFieldValue.При создании объекта непосредственно из CRecordset, оно является только для чтения. |
Дополнительные сведения о массовой строке выборке см. в статье Набор записей. Пакетная выборка строк (ODBC).
Header: afxdb.h