Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: JPG als blob in firebird-table speichern

  Alt 3. Mai 2005, 11:42
Hi,

habe jetzt doch mal getestet. Dabei musste ich zu meiner Schande feststellen, dass ich den Code für den ADO/OLEDB Zugriff einfach angepasst hatte, ohne das Handbuch vorher zu lesen. Im Gegensatz zu AdoQuery ist IbQuery eine Nur-Lesen-Komponente. Die Vorgehensweise unterscheidet sich dann etwas. Hoffentlich kommst du mit meinem Code klar.

Zerknirschte Grüße vom marabu

Delphi-Quellcode:
procedure ibLoadJpeg(q: TIBQuery; fieldName: string; jpeg: TJpegImage);
var
  s: TStream;
begin
  s := q.CreateBlobStream(q.FieldByName(fieldName), bmRead);
  jpeg.LoadFromStream(s);
  s.Free;
end;

function ibSaveJpeg(q: TIBQuery; paramName: string; jpeg: TJpegImage): boolean;
var
  s: TMemoryStream;
begin
  s := TMemoryStream.Create;
  jpeg.SaveToStream(s);
  q.ParamByName(paramName).LoadFromStream(s, TBlobType(0));
end;

procedure TMainForm.LoadBtnClick(Sender: TObject);
begin
  Q.SQL.Text := 'SELECT passphoto FROM s3gallery WHERE persnr = 123';
  Q.Open;
  ibLoadJpeg(q, 'passphoto', photo);
  Q.Close;
end;

procedure TMainForm.SaveBtnClick(Sender: TObject);
begin
  Q.SQL.Text := 'UPDATE s3gallery SET passphoto = :passphoto WHERE persnr = 123';
  ibSaveJpeg(Q, 'passphoto', photo);
  Q.ExecSQL;
end;
  Mit Zitat antworten Zitat