Moin, da fallen mir zwei Dinge auf:
Die Position im Stream muss auf 0 zurück gesetzt werden.
Eventuell musst du dich vergewissern, dass Graphic.SaveToStream() auch wirklich im JPEG-Format schreibt.
Delphi-Quellcode:
type
TDemoForm = class(TForm)
// ...
SaveBtn: TButton;
Image: TImage;
Database: TIBDatabase;
taDefault: TIBTransaction;
Q: TIBQuery;
// ...
procedure SaveBtnClick(Sender: TObject);
private
photo: TJpegImage;
// ...
end;
{ --- }
function ibSaveJpeg(q: TIBQuery; const paramName: string; jpeg: TJpegImage): Boolean;
var
s: TStream;
begin
s := TMemoryStream.Create;
jpeg.SaveToStream(s);
s.Position := 0;
q.ParamByName(paramName).LoadFromStream(s, TBlobType(0));
end;
procedure TDemoForm.SaveBtnClick(Sender: TObject);
begin
Q.SQL.Text := 'INSERT INTO contacts(id, photo) VALUES(123, :photo)';
ibSaveJpeg(Q, 'photo', photo);
Q.ExecSQL;
taDefault.CommitRetaining;
end;
Freundliche Grüße