direktzugriff oder über sql



  • angenommen, ich habe unter einem bestimmten Verzeichnis 10 Bilder gespeichert und ich will bestimmte Operationen auf den 10 Bildern durchführen, also 10 Bildern werden in einem Blackbox reingeschickt, die Ergebnisse kommen von anderer Seite aus, z.B. Bildgrösse anzeigen. Frage:
    1. ob Datenbanken auch Bilder(als Ganze) aufnehmen können;
    2. ich habe direktzugriff auf diese Bilder, d.h. ich kann sowohl die Bilder direkt rausholen (etwa per c++), oder auch über Datenbanken (etwa mysql_connect()...)

    Aber ich habe ein Gefühl, irgendwas stimmt hier nicht



    1. ja
    2. was verstehst du unter "Direktzugriff"?
      natürlich brauchts eine "select" Abfrage, um an die Daten wieder ranzukommen


  • 1. wie kann ich bilder in datenbanken speichern? speicher ich nur die adresse? was ist wenn die adresse geändert wird?
    2. direktzugriff meine ich mit "fopen" in C/C++



  • Nein, die Adresse / URL / Dateipfad reicht natürlich nicht, sondern du musst das Bild ("als Text") in die Query schreiben.
    Wenn du dann das Bild aus der DB lädst, hast du es komplett im Ram:
    SELECT bild FROM tabelle;
    Dann hast du in row[0] das Bild, brauchst also kein fopen. Kannst das Bild jetzt aber z.B. in eine Datei schreiben.
    Das knifflige ist, das Bild in die Query zu bekommen. Du musst mit mysql_real_escape_string() (oder so... dev.mysql.com) alle Sonder-/Steuerzeichen escapen, damit die Query nicht fehlerhaft wird.



  • Das Speichern und Laden von BLOB's in Datenbanken ist leider nicht einheitlich,
    da haben alle (ORACLE, SQL-Server, DB2) ihre eigenen Methoden. Daher musst du
    dir zuerst überlegen/entscheiden welche Datenbank du verwenden willst/musst.



  • Bilder als BLOB in die Datenbank zu schreiben ist nicht üblich.
    Warum sollte sich die URL ändern? Zumindest reicht es wenn sich der Bildname nicht ändert und die url im code steht.

    Wie man Bilder in BlOB speicher steht auf der Webseite von MySQL.
    Hier werden übrigens keine Zeichen als solches gepspeichert sondern alles bynär.


Anmelden zum Antworten