Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата(niggar @ 4.7.2005, 14:01)
variant_t v;
v = rec->GetFields()->GetItem(0)->Value;

Ты уже сделал пол дела - выгрузил данные из базы.
Осталось лишь преобразовать из _variant_t в удобные тебе тип.
Посмотри чему равен тип варианта - v.vt - и действуй дальше в зависимости от этого.
Скорее всего там окажется одномерный однобайтовый SAFEARRAY (VT_ARRAY), тогда ты сможеш пребразовать полученные данные в void*

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)