Hi,
erstmal die Daten vorweg:
Datenbank:
MySQL
Version:
5.0.27
BLOB-Feld:
MEDIUMBLOB
Noch eine kleine Info: Ich habe viele Foren durchstöbert und unterschiedliche Wege ausprobiert. Allerdings schaffe ich es nicht, ein Bild in dem BLOB-Feld zu speichern... und genau das ist jetzt mein Problem.
Folgender Code für das Anzeigen von Bildern funktioniert wunderbar (stammt aber von einem Kollegen)...
Delphi-Quellcode:
function TDatabaseConnection.GetImage(
query, AField:
String;
var Image: TJpegImage): boolean;
var
s: TMemoryStream;
begin;
OpenQuery(
query);
// query := 'SELECT bild FROM foto WHERE id = 123'
s := TMemoryStream.Create;
try
try
TBlobField(SQLQuery.FieldByName(AField)).SaveToStream(s);
// SQLQuery ist vom Typ TSQLQuery
s.Position := 0;
if s.Size > 0
then
begin
Image.LoadFromStream(s);
end;
except
on E:
Exception do
ShowMessage('
Fehler');
end;
finally
begin
s.Free;
FreeAndNil(SQLQuery);
end;
end;
end;
Der
folgende Code funktioniert
nicht! Ich habe selber mal ein bisschen rumprobiert, habe aber ehrlich gesagt auch keine Ahnung wie das wirklich funktioniert oder funktionieren sollte. Forenbeiträge hab ich aber massig gelesen und viel ausprobiert... leider erfolglos.
Speichern von Bildern:
Delphi-Quellcode:
function TDatabaseConnection.SetImage(
query, AField:
String;): boolean;
var
s: TMemoryStream;
begin;
s := TMemoryStream.Create;
try
try
s.LoadFromFile('
*BILDPFAD*\*BILDNAME*.jpg');
s.Position := 0;
if s.Size > 0
then
begin
SQLQuery.Append;
// Auch mit SQLQuery.Edit noch getestet
TBlobField(SQLQuery.FieldByName(AField)).LoadFromStream(s);
SQLQuery.Post;
end;
except
on E:
Exception do
ShowMessage('
Fehler');
end;
finally
begin
s.Free;
FreeAndNil(SQLQuery);
end;
end;
end;
Könnt Ihr mir vielleicht sagen wie ich das umschreiben muss, damit der Code funktioniert? Ich steh momentan absolut auf dem Schlauch und weiß nicht weiter.
Bin für jeden sinnvollen Beitrag dankbar!