Einzelnen Beitrag anzeigen

Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: JPG als blob in firebird-table speichern

  Alt 3. Mai 2005, 11:13
Zitat von marabu:
Hättest du mal nur die Erbgeschichte von TIBQuery studiert. Was mit TTable funktioniert, funktioniert auch mit TIBQuery, da beide mit TFields arbeiten. Na ja, du bist zu faul zum Lesen und ich bin zu faul zum Testen - ich denke wir sind quitt.

Also, dass du mich besser kennst als ich mich selbst überrascht mich fast ein wenig...
Aber wahrscheinlich hät ich zu meinen posting einfach noch ein paar Details schreiben sollen.
Nuja, also soweit war ich auch schon. Dein source geht nicht. Jedenfalls nicht ohne weiteres.
Ich hab der SaveJpg noch "dbField.DataSet.Edit;" und "dbField.DataSet.Post;" hinzugefügt.
der query hab ich auch dem "UpdateObject" ein TIBUpdateSQL zugewiesen (und auch das SQL generieren lassen). Hier mal das SQL für "insert":
SQL-Code:
insert into BLOBLTEST
  (ID, TEXT, PIC)
values
  (:ID, :TEXT, :PIC)
Aufrufen tu ich die SaveJPG wie folgt:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  pic: TJPEGImage;
begin
  pic := TJPEGImage.Create;
  pic.LoadFromFile('d:\test.jpg');
  try
    if SaveJpeg(ibqBlob.FieldByName('PIC'), pic) then begin
      ibqBlob.Transaction.Commit;
    end;
  finally
    pic.Free;
  end;
end;
Zum lesen benutz ich:
Code:
procedure TForm1.Button2Click(Sender: TObject);
var
  pic: TJPEGImage;
begin
  pic := TJPEGImage.Create;
  if LoadJpeg(ibqBlob.FieldByName('PIC'), pic) then begin
    pic.SaveToFile('D:\t.jpg');
  end;
end;
Es gibt keinerlei Exceptions aber wenn ich das Bild wieder lade ist d:\t.jpg 0 Byte groß!?
Was mach ich falsch?

Bin für jeden Hinweis dankbar.

PS: Hier das Script für die Test-Tabelle:
SQL-Code:
CREATE TABLE BLOBLTEST (
    ID INTEGER NOT NULL,
    TEXT VARCHAR(10),
    PIC BLOB SUB_TYPE 0 SEGMENT SIZE 2048
  Mit Zitat antworten Zitat