| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Базы данных > Как на С++ прочитать поле raw (Oracle) в ADO? |
| Автор: niggar 4.7.2005, 14:01 |
| В БД под управлением Oracle есть таблица с полем типа RAW. при обращении к таким полям получаю последовательность квадратиков как я понимаю двоичные данные. А мне надо записать это значение в буфер wchar_t*. Как конветнуть или правильно получить данные? Пример: ADODB::_RecordsetPtr rec = NULL; ADODB::_CommandPtr cmd = NULL; hr = cmd.CreateInstance(__uuidof(ADODB::Command)); cmd->ActiveConnection = conn; cmd->CommandType = ADODB::adCmdText; cmd->CommandText = _bstr_t(L"select f1 from t1"); rec = cmd->Execute( &vtMissing, &vtMissing, ADODB::adCmdText); variant_t v; v = rec->GetFields()->GetItem(0)->Value; Для размышления: если я помещу ковертацию в SQL, то все работает отлично.. но мне так не надо cmd->CommandText = _bstr_t(L"select raw_to_hex(f1) from t1"); Буду очень признателен за помощь. Спасибо. |
| Автор: Orlan 22.7.2005, 17:30 | ||
Ты уже сделал пол дела - выгрузил данные из базы. Осталось лишь преобразовать из _variant_t в удобные тебе тип. Посмотри чему равен тип варианта - v.vt - и действуй дальше в зависимости от этого. Скорее всего там окажется одномерный однобайтовый SAFEARRAY (VT_ARRAY), тогда ты сможеш пребразовать полученные данные в void* |