如何在PostgreSQL中使用 Delphi 东京持久化图像

xj3cbfub  于 4个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(57)

使用以下SQL:

INSERT INTO team (name, photo) VALUES (:name, :photo);

字符串
我已经在TImage组件中加载了一个图像,并在“people”表中加载了一个Bytea字段。
有人能帮我吗?

jvidinwx

jvidinwx1#

将图像插入Postgres BYTEA字段的代码示例如下:

procedure TForm1.SaveBlobClick(Sender: TObject);
var
   stream:  TMemoryStream;//TBlobStream TStream
   format: integer;

begin
   with query1 do
      begin
      sql.Clear;
      stream := TMemoryStream.Create;
      sql.Add('INSERT INTO tmp_blob (image) VALUES (:blob);');
      TmpJpg.SaveToStream(stream);
      ParamByName('blob').LoadFromStream(stream, ftGraphic ); 
      ExecSql;
      stream.Free;

      end;
end;

字符串
读取图像:

procedure TForm1.BLoadBlobClick(Sender: TObject);
var
   stream: TStream;//TMemoryStream
   g : TGraphic;
begin
   with query1 do
      begin
      close;
      sql.clear;
      sql.add('SELECT * FROM tmp_blob LIMIT 1' );
      Open;
      Stream := query1.CreateBlobStream(fieldByName('image') , bmRead );
      tmpJpg.LoadFromStream(stream);
      image1.Picture.Bitmap := tmpJpg.toBitmap;

      close;
      Stream.Free;
      end;
end;


注意:我使用SynGdiPlus库中的TJpegImage组件来加载和保存映像

相关问题