Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bilder in die DB speichern? (https://www.delphipraxis.net/173538-bilder-die-db-speichern.html)

OrNEC 1. Mär 2013 20:35

Datenbank: SQLite • Version: 3 • Zugriff über: SQLite4Delphi Wrapper von Tim Anderson

Bilder in die DB speichern?
 
Hallo Jungs,

ich möchte Bilder in eine DB speichern, nun meine Frage, wie mache ich das am besten, die Bilder in die DB selbst speichern oder nur die Links zu den Bildern? Welche Vor und Nachteile haben diese zwei Vorgehensweisen? Was würdet ihr mir raten?

Danke!

DeddyH 1. Mär 2013 20:38

AW: Bilder in die DB speichern?
 
Nachteil: BLOBs blähen die DB auf. Vorteil: sie sind dann aber auch in der DB und können nicht mal eben im Dateisystem gelöscht werden (es sei denn, die ganze DB wird gelöscht), so dass keine Verweisleichen entstehen können (sollten).

OrNEC 1. Mär 2013 20:40

AW: Bilder in die DB speichern?
 
Zitat:

Zitat von DeddyH (Beitrag 1205663)
Nachteil: BLOBs blähen die DB auf.

Wird die DB dadurch langsamer? Wenn ja ab wie viel MB, oder kann man das nicht so pauschal sagen?

DeddyH 1. Mär 2013 20:44

AW: Bilder in die DB speichern?
 
Das kann man AFAIK nicht so pauschal sagen. Manche DBMS sind so klug, bei "dämlichen" Abfragen wie
SQL-Code:
SELECT * FROM Tabelle
BLOBs nicht komplett zurückzugeben, andere ggf. nicht. Wenn man auf Nummer sicher gehen will, erstellt man eine 1:1-Beziehung und legt die BLOBs in eine eigene Tabelle.

OrNEC 1. Mär 2013 20:45

AW: Bilder in die DB speichern?
 
Ok! Sag ma kann man FileStream in String umwandeln? Sonst weiß ich nicht wie ich das in die DB inserte.

DeddyH 1. Mär 2013 20:46

AW: Bilder in die DB speichern?
 
Wieso kein TBlobStream?

OrNEC 1. Mär 2013 20:49

AW: Bilder in die DB speichern?
 
Ich hab ja meine Methode wo ich nicht weiß wie ich ein FileStream übergebe. sSQL ist ein String.

Delphi-Quellcode:
    // Tabelle media füllen
    sSQL := 'INSERT INTO media(medianr, mediatitle, description, status, isbn, publicationyear, insertdate, movedatetime, picture, ';
    sSQL := sSQL + 'fk_publisher_id, fk_place_id, fk_category_id, fk_language_id,';
    sSQL := sSQL + 'fk_author_id, fk_entleiher_id, edition) VALUES ("'+ IntToStr(varmedianr) +'",';
    sSQL := sSQL + '"'+ TitleEdit.Text +'",';
    sSQL := sSQL + '"'+ DescriptionMemo.Text +'",';
    sSQL := sSQL + '"'+ IntToStr(varstatus) +'",';
    sSQL := sSQL + '"'+ ISBNEdit.Text +'",';
    sSQL := sSQL + '"'+ PublicationyearEdit.Text +'",';
    sSQL := sSQL + '"'+ FormatDateTime('dd.mm.yyyy', Now) +'",';
    sSQL := sSQL + '"'+ varmovedatetime +'",';
    sSQL := sSQL + '"'+ fs +'",'; // <---- hier muss FileStream rein, aber wie?
    sSQL := sSQL + '"'+ IntToStr(Integer(PublisherComboBox.Items.Objects[PublisherComboBox.ItemIndex])) +'",';
    sSQL := sSQL + '"'+ IntToStr(Integer(PlaceComboBox.Items.Objects[PlaceComboBox.ItemIndex])) +'",';
    sSQL := sSQL + '"'+ IntToStr(Integer(CategoryComboBox.Items.Objects[CategoryComboBox.ItemIndex])) +'",';
    sSQL := sSQL + '"'+ IntToStr(Integer(LanguageComboBox.Items.Objects[LanguageComboBox.ItemIndex])) +'",';
    sSQL := sSQL + '"'+ IntToStr(Integer(AuthorComboBox.Items.Objects[AuthorComboBox.ItemIndex])) +'",';
    sSQL := sSQL + '"'+ IntToStr(Integer(EntleiherComboBox.Items.Objects[EntleiherComboBox.ItemIndex])) +'",';
    sSQL := sSQL + '"'+ EditionEdit.Text +'");';

Bernhard Geyer 1. Mär 2013 20:54

AW: Bilder in die DB speichern?
 
Am besten List du dir mal das Tutorial beim Delphi-Treff durch

p80286 2. Mär 2013 10:29

AW: Bilder in die DB speichern?
 
Im allgemeinen werden die Blobs ja in einer eigenen Tabelle gespeichert.
Z.B

Tab 1
ID,Titel,Interpret

Tab2
ID,Titel_ID,Titelcover

Gruß
K-H

Bernhard Geyer 2. Mär 2013 11:03

AW: Bilder in die DB speichern?
 
Zitat:

Zitat von p80286 (Beitrag 1205701)
Im allgemeinen werden die Blobs ja in einer eigenen Tabelle gespeichert.

Ist eigentlich nicht nötig. Jedes halbwegs vernünftig Implementiertes DBMS wird Blob-Felder eh außerhalb des normalen Records speichern so das hier (solange man nicht immer das Blob-Feld in den Selects anfordert) keine nennentswerten Performanceprobleme existieren. Das was du als Blob-Tabelle im ER-Modell wird intern eh schon ähnlich (optimiert) gelöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz