![]() |
Datenbank: firebird • Version: 2.1 • Zugriff über: zeos
Foto in DB speichern?
hallo zusammen,
wie würdet ihr ein Foto in der DB, auch in Bezug auf die Zugriffsgeschwindigkeit, speichern? a:)als Blobfeld, und dann welches Delphi-Datenformat verwenden, oder lieber b:) nur den Pfad in der Db speichern und das Foto auf der Platte ablegen? Danke für eure Meinungen Gruss KH |
Re: Foto in DB speichern?
Kommt auf deine Vorlieben an. In der Datenbank, hat den Vorteil, das sie einfach verschoben oder auf einen anderen Rechner verschoben werden können.
|
Re: Foto in DB speichern?
Zitat:
|
Re: Foto in DB speichern?
Wenn dann nicht spürbar
|
Re: Foto in DB speichern?
Ich bin ein BLOB-Fan und würde die Fotos in die DB schreiben. Je nachdem wie deine Anwendung aussieht, könntest du dir noch den Namen der Klasse reinschreiben, mit dem man das Bild wieder öffnen kann (z.B. TPNGObject). Dann kannst du ein "FindClass" machen und bist ziemlich variabel, was die Formate angeht.
|
Re: Foto in DB speichern?
Zitat:
kann ich da einfach ein datenformat verwenden,wenn ja welches, oder muss ich das Schreiben des Blob über eine Klasse erledigen ? |
Re: Foto in DB speichern?
Was meinst du mit Datenformat?
|
Re: Foto in DB speichern?
Zitat:
per sql schreib ich dann alles in einem Rutsch in die DB, wenn das denn so funktioniert? aber blob als datenformat gibts ja nicht :-( |
Re: Foto in DB speichern?
TBlobField.LoadFromFile()
|
Re: Foto in DB speichern?
Zitat:
Gruss KH |
Re: Foto in DB speichern?
nochmal Blob :-(
bei der Zuweisung FQuery1['ARTFOTO']:= FARTFOTO; FARTFOTO ist von Type TBLOBField ,bekomme ich nen Fehler : Error: Incompatible type for arg no. 2: Got "TBlobField", expected "Variant" was mach ich da noch falsch? dane Gruss KH |
Re: Foto in DB speichern?
Zeig doch mal die Routine zum Speichern (vielleicht zeig ich Dir dann auch meine :lol:).
|
Re: Foto in DB speichern?
Zitat:
die restliche Felder hab ich der Übersichtlichkeit wegen hier mal weggelassen. FQuery1.SQL.clear; FQuery1.SQL.add('select '); FQuery1.SQL.add('*'); FQuery1.SQL.add('from artikel where '); FQuery1.SQL.add('ARTIKEL_ID = :ARTIKEL_ID'); FQuery1.ParamByName('ARTIKEL_ID').AsInteger := FARTIKEL_ID; FQuery1.open; // liefert eine leere datenmenge FQuery1.append; // neuen Datensatz anhängen FQuery1['ARTFOTO']:= FARTFOTO; FhwdQuery1.post; |
Re: Foto in DB speichern?
Wieso holst Du Dir erst eine leere Datenmenge, statt gleich ein Insert zu machen?
|
Re: Foto in DB speichern?
Zitat:
Lasse mich aber gerne eines Besseren belehren. EDIT: ich habe append anstatt insert verwendet, weil ich den DS an der geöffneten Datenmenge anhängen wollte und nicht irgendwo zwischenreinschieben. Gruss KH |
Re: Foto in DB speichern?
Hier mal meine Routine (FBLib statt ZEOS, nicht wundern). Allerdings speichere ich vorher ggf. den neuen Datensatz ab und mache danach ein Update, um nicht alles doppelt schreiben zu müssen:
Delphi-Quellcode:
procedure TMyClass.StorePic;
var aStream: TMemoryStream; begin if FPicModified then begin with TFBLParamDsql.Create(nil) do try Transaction := FTransaction; if not Transaction.InTransaction then Transaction.StartTransaction; SQL.Text := 'UPDATE Tabelle SET Bild=:bild WHERE ID=:id'; Prepare; ParamByNameAsInt64('id',FID); if Assigned(FBild) then begin aStream := TMemoryStream.Create; try FBild.SaveToStream(aStream); aStream.Position := 0; BlobParamByNameLoadFromStream('bild',aStream); finally aStream.Free; end; end else ParamByNameAsNull('bild'); try ExecSQL; except raise; end; FPicModified := false; finally Free; end; end; end; |
Re: Foto in DB speichern?
ok, ich danke dir
Gruss KH |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz