Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Bild in Datenbank speichern - Problem

  Alt 17. Apr 2012, 08:39
Also ich sehe in diesem Abschnitt ein Problem:
Delphi-Quellcode:
SQLQuery.Append;
// Auch mit SQLQuery.Edit noch getestet
TBlobField(SQLQuery.FieldByName(AField)).LoadFromStream(s);
SQLQuery.Post;
Man kann nicht einfach einen Datensatz mit einem Blobfeld in eine Tabelle speichern ohne zumindest das Primärschlüsselfeld befüllt zu haben.

Ausserdem würde ich der Funktion nicht eine SQL-Query + Feldname als String übergeben, sondern gleich ein TField-Objekt.
Also z.B. so:
(das .Append und das .Post habe ich entfernt
auch der harte Cast auf TBlobfield war gefährlich
ausserdem wird jetzt auch der Result-Wert befüllt
und das schlechte Exception-Handling was auch unnötig)

Delphi-Quellcode:
function TDatabaseConnection.SetImage(field:TField): boolean;
var
  s: TMemoryStream;
begin;
  s := TMemoryStream.Create;
  try
    s.LoadFromFile('*BILDPFAD*\*BILDNAME*.jpg');
    s.Position := 0;
    result := s.Size > 0;
    if result then
      (field as TBlobField).LoadFromStream(s);
  finally
    s.Free;
  end;
end;
  Mit Zitat antworten Zitat