Подскажите пожалуйста, как записать произвольные данные в поле типа BLOB. Я использую ODBC и соответственно наследник CRecordset с полем "CLongBinary* m_pBinary;".
Желательно с примером кода.
Заранее благодарен!
Чтение данных предварительно туда записанных — без проблем.
void* p = ::GlobalLock(m_pBinary->m_hData);
// выполняем некоторые действия, например копируем в буффер
::GlobalUnlock(m_pBinary->m_hData);
А запись данных — облом
Предположим данные представленны в виде буффера(размер естественно озвестен)
Как мне произвести запись в поле
// Начинаем редактирование
pRecordset->Edit()
// Так у меня представлен буффер с новым значением
unsigned char* pBuffer;
long nBufferSize;
//
// ???
//
// Сохраняем изменения
pRecordset->Update()
Подскажите пожалуйста!!!
Меня интересует только вариант с использованием CRecordset и CLongBinary(можно и CByteArray, только покажите как его использовать.)
Здравствуйте Аноним, Вы писали:
А>Подскажите пожалуйста, как записать произвольные данные в поле типа BLOB. Я использую ODBC и соответственно наследник CRecordset с полем "CLongBinary* m_pBinary;".
Меня мучает точно такая же проблема
Зайя в pRecordset->Update() я увидел следующее:
Вот функции которые вызываются:
CRecordset::Update()
CRecordset::UpdateInsertDelete()
CRecordset::BuildUpdateSQL()
так вот, в CRecordset::BuildUpdateSQL() формируется запрос на Insert/Update где BLOB-поле отсутствует напрочь

, в принципе логично. Думаю, либо надо перед этим что — то делать с recordset'ом, либо копать надо в другом месте. Все больше склоняюсь к мысли, что придется писать на чистом API СУБД'шки, хотя не хочется.
С уважением, Сергей.