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

COLUMN індекс поля.

strValue

Посилання на CString об'єкт, який буде зберігати значення поля, перетворюється на текст, незалежно від типу даних поля.

Зауваження

Телефонуйте цієї функції-члена для отримання даних поля поточного запису. Поля можна шукати ім'я або індекс. Можна зберігати значення поля або CDBVariant об'єкт або об'єкт CString.

Якщо ви здійснили, отримання рядків навалом, поточного запису завжди розташовується на перший запис у набір рядків. Щоб використовувати GetFieldValue запис протягом даного набір рядків, ви повинні викликати функцію член SetRowsetCursorPosition , щоб перемістити курсор до потрібного рядка в цей набір рядків. Потім зателефонуйте GetFieldValue цього рядка. Для здійснення ряду навалом, вилучення, необхідно вказати CRecordset::useMultiRowFetch варіантом параметра dwOptions функцію відкритим члена.

За допомогою GetFieldValue динамічно витягти поля на час запуску, а не статично прив'язування їх час розробки. Наприклад, якщо ви заявили набору записів об'єкта безпосередньо з CRecordset, ви повинні використовувати GetFieldValue для отримання даних поля; Поле запису exchange (RFX), або навалом поле запису exchange (навалом RFX), не реалізовано.

Примітка   Якщо ви оголосити набору записів об'єкта без продиктована CRecordset, не мають ODBC курсор бібліотеки завантажені. Бібліотеку курсора вимагає, що набір записів є принаймні один Приєднаний стовпець; Однак, коли ви використовуєте CRecordset безпосередньо, жоден із стовпців неодмінно. Член функції CDatabase::OpenEx і CDatabase::Open контролю, чи буде завантажено бібліотеку курсора.

GetFieldValue дзвінки функції ODBC API SQLGetData. Якщо драйвер виводить значення SQL_NO_TOTAL для фактичного довжина значення поля, GetFieldValue кидає виключення. Щоб отримати додаткові відомості про SQLGetDataпобачити посилання SDK програміста ODBC.

Приклад

Наведений нижче зразок код ілюструє дзвінки на GetFieldValue для набору записів об'єкта, оголошений безпосередньо з CRecordset.

/ / Створення і відкриття об'єкта бази даних;
/ / не завантажити бібліотеку курсора
CDatabase-db;
дБ.OpenEx (NULL, CDatabase::forceOdbcDialog);

/ / Створення і відкриття набору записів об'єкта
/ / безпосередньо з CRecordset. Зверніть увагу, що на
/ / таблиці має існувати в базі даних зв'язку.
/ / Використовувати forwardOnly набору записів краще
/ / продуктивність, так як тільки MoveNext є обов'язковим
CRecordset рупій (amp дБ);
RS.Відкрийте (CRecordset::forwardOnly,
         _T ("виберіть * З SomeTable"));

/ / Створення об'єкта CDBVariant до
/ / збереження даних у полі
CDBVariant varValue;

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

RS.(Закрити);
дБ.(Закрити)

Примітка   На відміну від класу DAO CDaoRecordset CRecordset не має функції-члена SetFieldValue . Якщо ви створюєте об'єкт безпосередньо з CRecordset, це ефективно лише для читання.

Щоб отримати додаткові відомості про отримання рядків навалом, перегляньте статтю набір записів: вилучення записів у базову (ODBC) в Visual C++ програміста керівництво.

Огляд CRecordsetЧлени класу | Ієрархічна діаграма

Дивіться також CRecordset::DoFieldExchange, CRecordset::DoBulkFieldExchange, CRecordset::GetODBCFieldCount, CRecordset::GetODBCFieldInfo, CRecordset::SetRowsetCursorPosition

Index