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;