Startseite › Foren › Deutsches LiveCode-Forum › SQL-Datenbank Bilder verwalten
- Dieses Thema hat 4 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 1 Monat, 2 Wochen von
Herby.
-
AutorBeiträge
-
-
Februar 3, 2025 um 19:32 Uhr #47969
Hallo,
ich möchte Bilder (.png) in einer SQl-Datenbank speichern und laden. Hierfür habe ich mir eine einfache SQL-Datenbank angelegt mit den Feldern Tag und Monat (Integer), Text (Text) und Bild( Blob).
Ich habe es geschafft einen SQL-Datensatz zu erstellen mit:put revOpenDatabase(„sqlite“,dpfd,,,,) into xsql
put „INSERT INTO Kalender(Tag,Monat,VText,RText,Bild) VALUES (:1, :2, :3, :4, :5)“ into sql
revExecuteSQL xsql,sql,“xtag“,“xmonat“,“xvtext“,“xrtext“,“tImageData“
revCloseDatabase xsqlAnscheinend wurde das Bild (oder irgendetwas) auch im Feld Bild gespeichert, was ich mit meinem SQL-Browser feststellen konnte.
Den Text kann ich laden und anzeigen. Das Bildchen will einfach nicht geladen werden.put revOpenDatabase(sqlite,dpfd,,,,) into dbid
put „SELECT Bild from Kalender WHERE Tag = 14“ into xsel
put revQueryDatabase (dbid,xsel) into tImageData
put revDatabaseColumnNamed(tImageData, „Bild“, theImage)
set the text of image „iwse“ of card WSE to theImage
revCloseDatabase dbidSchon einmal Danke im Voraus
Herby -
Februar 5, 2025 um 12:55 Uhr #47977
Ich denke „imagedata“ und „text of image…“ sind zwei verschiedene Paar Schuh!
Und es sieht so aus, als würdest Du „imagedata“ eines Bildes speichern, aber später
„the text of image …“ setzen.Probiere es mal durchgängig mit einer Variante.
Hinweis: Wenn Du „imagedata“ verwendest, MÜSSEN beide Bilder (das gespeicherte und das
später wieder mit den Daten angezeigte Bild) DIE SELBEN Abmessungen haben in Breite und Höhe,
oder es funktioniert nicht oder gibt komische Ergebnisse.Lies Dir auch mal den Eintrag zu „revQueryDatabase“ im Dictionary durch, den Teil über „blob“.
Eventuell ist das auch von Bedeutung beim speichern der Bilddaten in der DB. -
Februar 7, 2025 um 16:11 Uhr #47978
Danke Klaus,
eigentlich brauche ich nur ca.100 Bilder in einer Android-App und ich habe noch nicht den richtigen Plan hierfür. Mit Texten in einer SQL-Datei habe ich schon einmal programmiert. Ich habe nun gesehen, dass bei den StandaloneApplication Settings (Copy Files) auch ein Verzeichnis auswählbar ist. Wenn die Bilder damit in die App kommen, dann wäre das sogar einfacher als BLOB-Dateien zu speichern.
Könnte dies funktionieren und wie sieht dies im Programm aus ?put specialFolderPath(„Resources“) & „/daten.db“ into xpfd
put specialFolderPath(„Documents“) & „/daten.db“ into dpfd
put url(„binfile:“ & xpfd) into url(„binfile:“ & dpfd) —> muss das binfile heißen ?Damit ist die SQL-Datei mit den Texten in der App und und im Register ‚Copy Files‘ wähle ich das Verzeichnis der Bilder aus. Genügt dies vielleicht ? Probiere ich aus, aber vielleicht übersehe ich etwas.
Beste Grüße aus Bergkirchen
Herby -
Februar 7, 2025 um 16:49 Uhr #47979
Wenn die Bilder nciht bearbeit werden, reicht es, alle Bilder in ein Verzeichnis zu packen und im Stack den relativen Pfad zur Anzeige verwenden.
„relativ“ heisst hier, relativ zum Stack:
Angenommen, Du hast alle Bilder im Ornder „bilder“ im Ordner mit dem Stack auf Deiner Platte
Dann kannst Du bei „Filename“ der Bilder im Stack/IDE Folgendes schreiben: bilder/bild1.jpg
Also ohne den kompletten Pfad!
Den Ordner fügst Du über „Copy files“ der Runtime hinzu.In der Runtime wird der relative Pfad automatisch in specialfolderpath(„resources“) übersetzt,
so daß alle Bilder auch so korrekt angezeigt werden.Bei Datenbanken ist das ein andere Sache, schön das Öffnen wird als „write“ angesehen und das
funktioniert nicht in specialfolderpath(„resources“)Dafür musst Du die DB zuerst in den Dokumenten Ornder kopieren und dort öffnen und speichern.
Daher musst Du sowas schreiben:on openstack ## Die Namen der spezialordner bitte KLEINschreiben, da Android und auch iOS ## CASE SENSITIVE Dateisysteme sind! put specialFolderPath("resources") & "/daten.db" into xpfd put specialFolderPath("documents“) & "/daten.db" into dpfd ## Erst checken, ob wir das nicht schon getan haben! ## Allererster App-Start: if there is NO file dpfd then put url("binfile:" & xpfd) into url("binfile:" & dpfd) ## Ja, alles was kein reiner TEXT ist,. muss als BINFILE behandelt werden! end if ## Weitere Anweisungen... ## Jetzt kann die DB im Dokumenten Ordner geöffnet/benutzt werden... end openstack
Gruß
Klaus -
Februar 8, 2025 um 16:03 Uhr #47980
Lieber Klaus,
es hat funktioniert.
Vielen Dank
Herby
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.