Удобнее всего пожалуй через TMemoryStream.
Для варианта ADO + SQL я делаю так:
| Код | //--------------------------------------------------------------------------- // SetGraphicField // Помогает сохранить в BLOB поле картинку // pQ - Запрос // pPic - Картинка // pFieldName - Имя поля // Поле IsPicturePresent должно быть правильно установлено bool TMAN_ADOVrec::SetGraphicField( TADOQuery * pQ, Jpeg::TJPEGImage * pPic, AnsiString pFieldName) { bool Ret = true; TBlobField *pBf = NULL; TMemoryStream *pMS = NULL;
pBf = (TBlobField*)pQ->FieldByName(pFieldName);
if (!IsPicturePresent) { pBf->Clear(); goto ExitProc; }
try {
pMS = new TMemoryStream; pPic->SaveToStream(pMS); pMS->Position = 0; pBf->LoadFromStream(pMS); } catch(...) { Ret = false; }
ExitProc:
if (pMS != NULL) delete pMS;
return Ret; }
|
Это кусок моего класса, там используются служебные поля, но общая логика вполне ясна |