CRecordset::GetFieldValue

аннулировать GetFieldValue (LPCTSTR lpszNameCDBVariantamp; varValueкороткиеnFieldType= DEF&AULT_FIELD_TYPE);
Бросай (CDBException, CMemoryException);

аннулировать GetFieldValue (короткие nIndexCDBVariantamp; varValueкороткиеnFieldType= DEF&AULT_FIELD_TYPE);
Бросай (CDBException, CMemoryException);

аннулировать GetFieldV&alue (LPCTSTR lpszNameCStringamp;strValue );
броска (CDBException, CMemoryException);

аннулировать GetFieldV&alue (короткие nIndexCStringamp;strValue );
броска (CDBException, CMemoryException);

Параметры

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_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

Для получения дополнительных сведений о типах данных ODBC приведены в разделах «Типы данных SQL» и «Типы данных C» в добавлении d Справочник программиста ODBC SDK.

nIndex

Начинающийся с нуля индекс поля.

strValue

Ссылка на объект CString , которая будет хранить значение поля преобразуются в текст, независимо от типа данных поля.

Примечания

Вызов этой функции-члена для получения данных поля в текущей записи. Вы можете посмотреть поле по имени или по индексу. Значение поля можно хранить в CDBVariant объект или объект CString.

При реализации групповой выборки строк, текущая запись всегда размещается на первой записи в наборе строк. Чтобы использовать GetFieldValue на запись в данном наборе, необходимо вызвать функцию-член SetRowsetCursorPosition для перемещения курсора к требуемой строки в этом строк. Затем вызовите GetFieldValue для этой строки. Для реализации групповая выборка строк, необходимо указать параметр CRecordset::useMultiRowFetch dwOptions параметра в функции-члена Open.

GetFieldValue можно использовать для динамического извлечения поля во время выполнения, а не статически привязки во время разработки. К примеру если вы объявили объекта recordset непосредственно от класса CRecordset, используйте GetFieldValue для извлечения поля данных; обмен полей записей (RFX) или блочный обмен полей записей (Bulk RFX Соответственно), не реализована.

Примечание   Если объявить объект recordset без получения от CRecordsetне имеют библиотека курсоров ODBC загружена. Библиотека курсоров требует, чтобы набор записей по крайней мере один связанный столбец; Однако когда вы используете CRecordset непосредственно, ни один из столбцов неизбежно. Член функционирует CDatabase::OpenEx и CDatabase::Open контроль ли будет загружена библиотека курсоров.

GetFieldValue вызывает функцию интерфейса API ODBC SQLGetData. Если драйвер выводит значение SQL_NO_TOTAL для фактической длины значения поля, GetFieldValue выдает исключение. Для получения дополнительных сведений о функции SQLGetDataприведена в справочнике программиста ODBC SDK.

Пример

Следующий пример кода иллюстрирует вызовы GetFieldValue для объекта набора записей, объявленные непосредственно от CRecordset.

/ / Создание и открытие объекта базы данных;
/ / не загрузить библиотеку курсоров
CDatabase дБ;
DB.OpenEx (NULL, CDatabase::forceOdbcDialog);

/ / Создание и открытие объекта набора записей
/ / непосредственно от класса CRecordset. Следует отметить, что
/ / таблица должна существовать в подключенной базе данных.
/ / Использовать forwardOnly тип набора записей для лучших
/ / производительность, так как требуется только MoveNext
CRecordset rs (amp дБ);
RS.Открыть (CRecordset::forwardOnly,
         _T ("выбор * от SomeTable"));

/ / Создать объект CDBVariant для
/ / хранения данных поля
CDBVariant varValue;

/ / Loop по набору записей
/ / использование GetFieldValue и
/ / GetODBCFieldCount для получения
/ / данные во всех столбцах
короткая nFields = rs.GetODBCFieldCount ();
в то время как (! rs.IsEOF ())
{
   для (короткий индекс = 0; индекс < nFields; индекс ++)
   {
      RS.GetFieldValue (индекс, varValue);
      / / сделать что-то с varValue
   }
   RS.Метод MoveNext ();
}

RS.Закрыть ();
DB.Закрыть)

Примечание   В отличие от класса DAO CDaoRecordset CRecordset не имеет функции-члена SetFieldValue . Если вы создаете объект непосредственно от класса CRecordset, это эффективно-только для чтения.

Дополнительные сведения о групповой выборки строк, найти в статье набор записей: выборка записей (ODBC) в Руководстве по Visual C++ программист.

Обзор CRecordsetЧлены класса | Иерархическая схема

См. также CRecordset::DoFieldExchange, CRecordset::DoBulkFieldExchange, CRecordset::GetODBCFieldCount, CRecordset::GetODBCFieldInfo, CRecordset::SetRowsetCursorPosition

Index