Startseite › Foren › Deutsches LiveCode-Forum › sqlite
- Dieses Thema hat 7 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahren, 11 Monaten von Anonym.
-
AutorBeiträge
-
-
Oktober 7, 2020 um 22:02 Uhr #23440Anonym
Hallo, ich habe eine App für Android entwickelt, bei der Daten aus einer sqlite-Datei geladen werden. Das funktioniert in Windows und auf meinem Galaxy Tablet wunderbar. Aber in meinem Samsung A6 wird die Datenbank nicht gefunden. Sehr merkwürdig!? Hat jemand von Euch vielleicht eine Idee?
LG Andreas
-
Oktober 8, 2020 um 05:18 Uhr #23449
Ich mache es bei solchen Phänomenen so dass ich mir Buttons mache mit denen ich mir die ganzen Pfade anzeigen lasse, so kann ich sehen wo unter den diversen Systemen die Pfade wirklich sind.
z. B.on mouseUp pMouseButton answer specialfolderpath("resources") end mouseup on mouseUp pMouseButton answer specialfolderpath("documents") end mouseup on mouseUp pMouseButton answer specialfolderpath("engine") end mouseu
LG Immanuel
-
Oktober 8, 2020 um 12:48 Uhr #23456Anonym
Danke für den Tip, das probiere ich aus!!
LG Andreas
-
Oktober 8, 2020 um 13:46 Uhr #23458Anonym
Hi Immanuel,
Dein Tip hat mich bisher leider nicht weiter gebracht. Der documents-ordner ist bei beiden Geräten unter /data/user/0/com.yourcompany.yourapp/files. Der Pfad zur sqlite-Datei ist ebenfalls bei beiden Geräten /data/user/0/com.yourcompany.yourapp/files/meineDatei.sqlite. Kann das u.U. etwas mit Sicherheitseinstellungen im Mobiltelefon zu tun haben? Das ist ein Geschäftshandy. Mein tablet ist privat.
LG Andreas
-
Oktober 8, 2020 um 14:42 Uhr #23463
Hallo,
SQLites immer in “specialfolderpath(“documents”) – woanders gehen die nicht (mobil).
Diesen “specialFolderPath” immer auch als solchen ansprechen – “/data/user/0/com.yourcompany.yourapp/files” kann der gleiche sein, muss aber nicht. Am besten im preOpenStack:
put specialfolderpath("documents") into gPathD
und dann gPathD als globale Variable (deklarieren nicht vergessen!) für Pfade verwenden:
put revdb_connect("sqlite",gPathD & slash & "mydb.sqlite") into myDbID
Dann: Groß-/ Kleinschreibung beachten! Android ist “case sensitive”.
Zuletzt: Zu Debug-Zwecken eine kleine Text-Datei mitkopieren – wenn Du dir deren Inhalt mit:
answer URL ("file:" & gPathD & slash & "debug.txt")
anzeigen lassen kannst, ist der Dokumentenpfad korrekt, und der Fehler liegt woanders 😉Viel Spaß!
-
Oktober 8, 2020 um 15:45 Uhr #23467
Die DB Datei hast Du sicher über den “Copy files” tab in den “Standalone Application Settings” Deiner Runtime hinzugefügt, korrekt?
Dann ist er in der Runtime hier zu finden -> specialfolderpath(“resources”)
ABER dort haben wir keine Schreibrechte und selbst das öffnen einer DB wird als schreiben angesehen!Daher müssen wir die Datenbank beim ersten Programmstart in den DOCUMENTS Ornder kopieren und von dort öffnen!
on openstack put specicalfolderpath("resources") & "/meine_db.db" into tSourceDatei put specicalfolderpath("documents") & "/meine_db.db" into tZielDatei if there is not a file tZielDatei then put url("binfile:" & tSourceDatei) into url("binfile:" & tZielDatei) end if ## Nun Deine Datenbank von hier öffnen: ## -> put specicalfolderpath("documents") & "/meine_db.db" into aktuelleDatenBank end openstack
-
Oktober 9, 2020 um 07:42 Uhr #23486Anonym
Guten Morgen,
vielen Dank für Eure Antworten. Genauso wie Klaus das beschrieben hat, habe ich das auch gemacht. Mittlerweile habe ich das Problem gelöst. Ich hatte die Datenbankstruktur und den Inhalt zwischendurch immer wieder mal geändert, den Datenbanknamen aber unverändert gelassen. Die Lösung war, der sqlite-Datei einen anderen Namen zu geben. Dann wird tTargetFile wieder neu überschrieben und alles funktioniert perfekt auf beiden Geräten.
LG Andreas
-
Oktober 22, 2020 um 07:56 Uhr #23774Anonym
Hallo,
ich habe gerade bemerkt, dass es noch eine einfachere Lösung gibt. Man muss die App vom Smartphone deinstallieren. Nach dem Neuinstallieren werden auch die Änderungen in der Datenbank übernommen. Ist eigentlich logisch, aber manchmal ist der Knoten in der Birne.
LG Andreas
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.