Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird Grafiken speichern (https://www.delphipraxis.net/134243-firebird-grafiken-speichern.html)

f4k3 18. Mai 2009 13:37

Datenbank: Firebird • Version: 2.1 • Zugriff über: ZEOS

Firebird Grafiken speichern
 
Moin Moin liebe DPler ;)

ich möchte gerne Grafiken in einer Datenbank speichern ;) nun bei Paradox :roteyes: ging dass ja ganz einfach :P
Da gabs nämlich nen Datentyp für ;) bei Firebird gibt es keinen ... so nun meine Frage an euch ...

Gibt es einen Datentyp bei Firebird der sich für solche Aktionen misshandeln lässt? :D

Also bis auf Blob würde ich keinen sehen ... da ich bisher noch nicht mit Blob gearbeitet habe stellt sich nun
die Frage, wie man, wenn man es realisieren kann, mit Blob durchführt? :wiejetzt:

Aus Wiki weiß ich dass einige DBMS-Systeme es erlauben, quasi komplette Dateien in Blob-Feldern zu speichern.

Mithrandir 18. Mai 2009 13:41

Re: Firebird Grafiken speichern
 
Hi,

Das geht auch mit ZEOS und Firebird. Wenn du dir aber einen Gefallen tun willst, dann speicherst du das Bild auf der Festplatte und speicherst eine Referenz darauf in der DB. Ist wesentlich einfacher und transparenter.

Ansonsten:

http://www.delphi-treff.de/tutorials...ebird/page/17/

mkinzler 18. Mai 2009 13:58

Re: Firebird Grafiken speichern
 
Zitat:

Das geht auch mit ZEOS und Firebird. Wenn du dir aber einen Gefallen tun willst, dann speicherst du das Bild auf der Festplatte und speicherst eine Referenz darauf in der DB. Ist wesentlich einfacher und transparenter.
Kommt darauf an, ob auf die Grafiken ausserhalb des Programmes noch Zugriff möglich sein soll.
Wenn man sie in der Datenbank gespeichert sind, braucht man sich keine Gedanken um Datenpfade, Netzfreigaben, Datenpfadumzug usw. machen, was sonst u.U. nötig wäre

hoika 18. Mai 2009 14:10

Re: Firebird Grafiken speichern
 
Hallo,

ab einer bestimmten Größe wird FB mit eingebundenen Grafiken aber langsamer.


Heiko

mkinzler 18. Mai 2009 14:11

Re: Firebird Grafiken speichern
 
Zitat:

Zitat von hoika
Hallo,

ab einer bestimmten Größe wird FB mit eingebundenen Grafiken aber langsamer.


Heiko

Dürfte es aber nicht, da Blobs (ab einer bestimmten) in einem eigene Bereich ausserhalb der Tabelle gespeichert werden, dann befindet sich nur eine Zeiger (Blob-ID) auf die eigenen Daten in der Tabelle

hoika 18. Mai 2009 14:32

Re: Firebird Grafiken speichern
 
Hallo,

ist schon klar.

Ich kenne aber mindestens einen Test,
indem das Speichern von Bildern in der DB (~100.000 jpegs)
zu einer spürbaren Verlangsamung führte.

Bei einem Test mit Oracle (9i) gab es keine Probleme.

Im Zweifelsfall muss man das einfach Ausprobieren.


Heiko

mkinzler 18. Mai 2009 14:41

Re: Firebird Grafiken speichern
 
Beo Oracle wird grundsätzlich separat gespeichert. FireBird entscheidet, ob inline oder nur der Verweis gespeichert wird.

f4k3 18. Mai 2009 14:48

Re: Firebird Grafiken speichern
 
Zitat:

Zitat von Daniel G
Hi,

Das geht auch mit ZEOS und Firebird. Wenn du dir aber einen Gefallen tun willst, dann speicherst du das Bild auf der Festplatte und speicherst eine Referenz darauf in der DB. Ist wesentlich einfacher und transparenter.

Ansonsten:

http://www.delphi-treff.de/tutorials...ebird/page/17/

Also speichern auf der Festplatte würde evtl. zur Dateninkonsistenz führen, wenn jemand dass Bild verschiebt,umbenennt oder löscht.
Die Anzahl der zu speichernden Bilder wird vielleicht in zehn Jahren die 100er Grenzen überschreiten ... also es werden nicht
sehr viele Bilder gespeichert. Die Auflösung der Bilder wird 64x64 im JPEG-Format gespeichert. Die Qualität liegt bei 80 % ... Es wird also
auch nicht sehr viel Speicherplatz benötigt.

Unter diesen Gesichtspunkten möchte ich es also schon lieber in der Datenbank abspeichern.

Danke für den Link ;)

f4k3 18. Mai 2009 14:51

Re: Firebird Grafiken speichern
 
Zitat:

Zitat von mkinzler
Zitat:

Das geht auch mit ZEOS und Firebird. Wenn du dir aber einen Gefallen tun willst, dann speicherst du das Bild auf der Festplatte und speicherst eine Referenz darauf in der DB. Ist wesentlich einfacher und transparenter.
Kommt darauf an, ob auf die Grafiken ausserhalb des Programmes noch Zugriff möglich sein soll.
Wenn man sie in der Datenbank gespeichert sind, braucht man sich keine Gedanken um Datenpfade, Netzfreigaben, Datenpfadumzug usw. machen, was sonst u.U. nötig wäre

Zugriff außerhalb des Programms ist nicht notwendig ...
Wenn ein Benutzer sein Anzeigebild ändern möchte, kann er das vorhande mit einem neuen ersetzen.

Außerdem ist der FB-Server nicht lokal installiert ... sondern auf einem Server in der Domäne ...
und die Grafiken hin zu kopieren ist völlig witzlos ... wenn ich die Daten in der Tabelle speichern kann.

Die Grafiken zu kopieren wäre allenfalls eine Notlösung ;)

f4k3 18. Mai 2009 14:52

Re: Firebird Grafiken speichern
 
Zitat:

Zitat von f4k3
Zitat:

Zitat von mkinzler
Zitat:

Das geht auch mit ZEOS und Firebird. Wenn du dir aber einen Gefallen tun willst, dann speicherst du das Bild auf der Festplatte und speicherst eine Referenz darauf in der DB. Ist wesentlich einfacher und transparenter.
Kommt darauf an, ob auf die Grafiken ausserhalb des Programmes noch Zugriff möglich sein soll.
Wenn man sie in der Datenbank gespeichert sind, braucht man sich keine Gedanken um Datenpfade, Netzfreigaben, Datenpfadumzug usw. machen, was sonst u.U. nötig wäre

Zugriff außerhalb des Programms ist nicht notwendig ...
Wenn ein Benutzer sein Anzeigebild ändern möchte, kann er das vorhande mit einem neuen ersetzen.

Außerdem ist der FB-Server nicht lokal installiert ... sondern auf einem Server in der Domäne ...
und die Grafiken hin zu kopieren ist völlig witzlos ... wenn ich die Daten in der Tabelle speichern kann.

Die Grafiken zu kopieren wäre eine Notlösung ;)

Falscher Button :dancer:

hoika 18. Mai 2009 14:54

Re: Firebird Grafiken speichern
 
Hallo,

also bei dem bisschen Grafik kannst du es in die DB packen.


Heiko

f4k3 18. Mai 2009 15:10

Re: Firebird Grafiken speichern
 
Zitat:

Zitat von hoika
Hallo,

also bei dem bisschen Grafik kannst du es in die DB packen.


Heiko

Alles klar ;) Danke an alle ;)

f4k3 19. Mai 2009 11:18

Re: Firebird Grafiken speichern
 
Zitat:

Zitat von Daniel G
Hi,

Das geht auch mit ZEOS und Firebird. Wenn du dir aber einen Gefallen tun willst, dann speicherst du das Bild auf der Festplatte und speicherst eine Referenz darauf in der DB. Ist wesentlich einfacher und transparenter.

Ansonsten:

http://www.delphi-treff.de/tutorials...ebird/page/17/

Zu der Sache mit den BLOBs ... also die Datenbank entscheidet selbst ... ob es ein Inline oder den Verweis speichert.
Ich hab nun das Problem dass, wenn ich die Grafik in die Datenbank speichern möchte, eine Fehlermeldung kommt.

Ich habs so gemacht wie im Link oben ...

Hab mir das "Ergebnis" mal ausgeben lassen, und anscheinend wird immer "nichts" dem BLOB übergeben :(

Ich weiß ihr wollt die Fehlermeldung ;) ... ich reich Sie nach der Mittagspause nach :P

kann ja sein, dass evtl. jemand weiß warum nichts übergeben wird bzw. wo potenzielle Gefahrenquellen liegen.


Gruß euer f4k3 ;)

f4k3 19. Mai 2009 11:45

Re: Firebird Grafiken speichern
 
Zitat:

Zitat von Daniel G
Hi,

Das geht auch mit ZEOS und Firebird. Wenn du dir aber einen Gefallen tun willst, dann speicherst du das Bild auf der Festplatte und speicherst eine Referenz darauf in der DB. Ist wesentlich einfacher und transparenter.

Ansonsten:

http://www.delphi-treff.de/tutorials...ebird/page/17/

Zu der Sache mit den BLOBs ... also die Datenbank entscheidet selbst ... ob es ein Inline oder den Verweis speichert.
Ich hab nun das Problem dass, wenn ich die Grafik in die Datenbank speichern möchte, eine Fehlermeldung kommt.

Ich habs so gemacht wie im Link oben ...

Hab mir das "Ergebnis" mal ausgeben lassen, und anscheinend wird immer "nichts" dem BLOB übergeben :(

Ich weiß ihr wollt die Fehlermeldung ;) ... ich reich Sie nach der Mittagspause nach :P

kann ja sein, dass evtl. jemand weiß warum nichts übergeben wird bzw. wo potenzielle Gefahrenquellen liegen.


Gruß euer f4k3 ;)

//edit: Wie "lang" sollte das Blob-Feld sein?
//edit: deutsche Sprache, schwere Sprache ;)

DeddyH 19. Mai 2009 12:08

Re: Firebird Grafiken speichern
 
Und wenn Du die Streamposition vor dem Ausführen des Statements auf 0 setzt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 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