до втрати 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