Поделиться через


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

См. также

Ссылки

Класс CRecordset

Диаграмма иерархии

CRecordset::DoFieldExchange

CRecordset::DoBulkFieldExchange

CRecordset::GetODBCFieldCount

CRecordset::GetODBCFieldInfo

CRecordset::SetRowsetCursorPosition