четверг, 20 апреля 2017 г.

Delphi ADO чтение/запись из Blob поля

Пример кода чтения и сохранения данных из blob поля через TADOQuery.

//включаем режим редактирования
aADOQuery.Edit;
//читаем поле blob
GridField := TBlobField(aADOQuery.FieldByName('BLOB'));
//Создаем поток для чтения записи
ComStream := aADOQuery.CreateBlobStream(GridField, bmReadWrite);
try
   //укажем имя файла для выгрузки
   ComFileName:=ExtractFilePath(Application.ExeName)+'blob.blob';
   //поток для файла
   ComFileStream:=TFileStream.Create(ComFileName,fmCreate);
   try
      //Скопируем все из blob потока в файл
      ComFileStream.CopyFrom(ComStream,ComStream.Size);
   finally
      //освободим поток файла
      ComFileStream.free;
    end;

   ......
   
    //поток для загружаемого фала
    ChComFileStream:=TFileStream.Create(ComFileStream,fmOpenRead);
    try
       //Скинем поток данных в поле
       ComStream.Size:=0;
       ComStream.Position:=0;
       //Скопируем все из файл
       ComStream.CopyFrom(ChComFileStream,ChComFileStream.Size);
    finally
      //очистим поток фала
      ChComFileStream.Free;
    end;   
finally
   //освободим поток поля blob
   ComStream.Free;
end;
//зафиксируем изменения
aADOQuery.Post;

Комментариев нет:

Отправить комментарий