FireDac+PostgreSQL+bytea (blob) [сообщение #2644] |
Tue, 27 June 2023 23:47 |
GrigoryFomin
Сообщений: 91 Зарегистрирован: April 2023
|
Member |
|
|
Уже несколько дней воюю - документации ноль, в форумах ответа не нашел, мож слеп, подскажите плз направление.
Нужно в bytea поле загрузить стрим. Стрим из FB вытащил, а вот засунуть - ошибка:
while not qFBPhotos.Eof do
begin
qPG.Active := false;
qPG.ParamByName('PHID').AsSmallInt := qFBPhotos.FieldByName('PID').AsInteger;
bb.Clear;
(qFBPhotos.FieldByName('pict') as TBlobField).SaveToStream(bb);
bb.Seek(0,0);
qPG.ParamByName('photo').DataType:=ftBlob;
qPG.ParamByName('photo').AsStream:=bb;
qPG.ParamByName('phDBDATE').AsDateTime := qFBPhotos.FieldByName('DBDATE').AsDateTime;
qPG.ExecSQL;
//И тут вылазит ошибка, которую снизу указал
memo1.Lines[memo1.Lines.Count-1]:='Переносится фото '+qFBPhotos.RecNo.ToString+' из '+qFBPhotos.recordcount.tostring;
Application.ProcessMessages;
qFBPhotos.next;
end;
First chance exception at $00007FF9B7C2CF19. Exception class EFDException with message '[FireDAC][Phys][PG]-352. Object value for [PHOTO] parameter of [ftBlob] type is not supported'.
|
|
|
|
|
Re: FireDac+PostgreSQL+bytea (blob) [сообщение #2655 является ответом на сообщение #2649] |
Wed, 28 June 2023 21:02 |
GrigoryFomin
Сообщений: 91 Зарегистрирован: April 2023
|
Member |
|
|
Спасибо помогло, итоговый вариант стал
while not qFBPhotos.Eof do
begin
qPG.Active := false;
qPG.ParamByName('PHID').AsSmallInt := qFBPhotos.FieldByName('PID').AsInteger;
bb.Clear;
(qFBPhotos.FieldByName('pict') as TBlobField).SaveToStream(bb);
bb.Seek(0,0);
qPG.ParamByName('photo').LoadFromStream(bb,ftBlob);
qPG.ParamByName('phDBDATE').AsDateTime := qFBPhotos.FieldByName('DBDATE').AsDateTime;
qPG.ExecSQL;
memo1.Lines[memo1.Lines.Count-1]:='Переносится фото '+qFBPhotos.RecNo.ToString+' из '+qFBPhotos.recordcount.tostring;
Application.ProcessMessages;
qFBPhotos.next;
end;
|
|
|