Startseite › Foren › Deutsches LiveCode-Forum › App funktioniert in Simulation auf Mobile nicht
Schlagwörter: SQLite
- Dieses Thema hat 7 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 5 Jahren, 5 Monaten von Gerti08.
-
AutorBeiträge
-
-
Mai 11, 2019 um 14:05 Uhr #14729
Hallo zusammen,
nach ein paar Tagen LC bekomme ich immer mehr Spaß und schmeiße fast täglich meine App Umsetzung um, weil ich immer mehr neue Features verstehe.
An dieser Stelle ein Dank an Klaus für die guten Anfangstipps.
Jetzt bin ich inzwischen bei der Datenbankanwendung angelangt. Das Anlegen, befüllen uns anzeigen klappt in der Simulation sehr gut, bei meiner Standalone Android App auf einem S6 leider nicht. Die Datenbankeinträge werden zwar angezeigt, ich kann aber keine hinzufügen.
Ich nutze Sqlite.
Hat einer eine Idee? Muss ich evtl. Noch eine Variable setzen?
Grüße
Gerti -
Mai 11, 2019 um 14:32 Uhr #14731
Hi Gerti,
gern geschehen! 🙂
Ich arbeite dran, aber Gedanken lesen kann ich immer noch nicht, also wäre es hilfreich, wenn Du mal Deine Skripte posten könntest. 😎
Schätze hier liegt ein Pfadproblem vor. Nicht vergessen, der Simulator hat Zugriff auf Dein Gastdateisystem (Windows, nehme ich an), das Handy aber nicht! Das könnte den Unterschied erklären.
Gruß
Klaus
-
Mai 11, 2019 um 14:36 Uhr #14733
Auch hier mal reinschauen:
https://www.livecode-blog.de/forums/topic/sqlite-datenbank-speichert-nicht/ -
Mai 11, 2019 um 17:30 Uhr #14739
Hallo Klaus,
na klar kannst du nicht hellsehen ;o)
Ich hatte so verstanden, dass die Datenbankstruktur mit im Code verarbeitet wird. Also muss ich die db außerhalb anlegen und die App darauf zugreifen lassen ?
Idee:
1. ich habe eine SQLite DDB in Firefox angelegt.
2. diese wird über meine App angesprochen
3. zu testen kann ich neue Einträge generieren (über 3 Felder)
4. über ein refresh will ich die Daten dann sehenHier mein Script:
Anzeigen der aktuellen Datenbankeinträge beim öffnen der Cardon opencard
put revOpenDatabase(“sqlite”, “C:\Users\Winternet\Documents\MyLiveCode\testsqlite.sqlite”, , , , ) into dbidput “SELECT name,x,y FROM hello” into sql
put revDataFromQuery(tab,return,dbid,sql) into ergebnis
set the dgtext of group “myDataGrid” to ergebnis
end opencardDann einlesen der neuen Werte aus 3 Feldern:
on mouseUp
put revOpenDatabase(“sqlite”, “C:\Users\Winternet\Documents\MyLiveCode\testsqlite.sqlite”, , , , ) into dbid
put field “field1” into Wert1
put field “field2” into x
put field “field3” into yput “INSERT INTO hello (name,x,y) VALUES (” & “‘” & Wert1 & “‘, ” & “‘” & x & “‘,” & “‘” & y & “‘)” into sql
revExecuteSQL dbid, sql
revCloseDatabase dbid
end mouseUpUnd dann über Refresh Button eigentlich einlesen der aktuellen Einträge in die DB.
on mouseUp
put revOpenDatabase(“sqlite”, “C:\Users\Winternet\Documents\MyLiveCode\testsqlite.sqlite”, , , , ) into dbidput “SELECT name,x,y FROM hello” into sql
put revDataFromQuery(tab,return,dbid,sql) into ergebnis
set the dgtext of group “myDataGrid” to ergebnis
revCloseDatabase dbid
end mouseUp…. wenn ich das so lese, verstehe ich wahrscheinlich schon, warum es nicht geht. Die DB liegt ja tatsächlich auf meinem Rechner und nicht in einem Pfad meines Mobile.
aber wie bekomme ich die denn dann überhaupt dahin?
Ich will ja nicht vorher manuell die DB erst auf mein Mobile kopieren müssen, damit es funktioniert.
Hm…irgendwie habe ich da wohl noch einen logischen Fehler
Grüße
Heike -
Mai 11, 2019 um 18:28 Uhr #14741
Hallo Gerti/Heike (wat denn nu? 🙂 ),
eine Bitte, nachdem du hier ein Skript eingefügt hast, bitte das Skript noch einmal auswählen und mit CODE Tags versehen = klick auf den Button CODE über dem Eingabefeld. Dann bleibt die formatierung erhalten und man und frau können das besser lesen.
Ja, da haben wir den Fehler schon gefunden.
Mach bitte Folgendes:
1. Kopiere oder verschiebe die DB Datei(en) in den Ordner mit dem Stack
2. Dann öffne die “Stanalone Application Settings…” (Menü: Edit)
3. Dort bei “Copy files” diese Datei auswählen
4. Dann wird sie der Standalone hinzugefügt und Du findest sie im -> specialfolderpath(“resources”) in der Standalone.
Allerdings haben wir in dem Ordner keine Schreibrechte, das Oeffnen der DB wird schon als Schreiben angesehen, daher müssen wir sie in den -> specialfolderpath(“documents”) kopieren beim ersten Start der App und dort öffnen.Das geht so:
on openstack ## Hier legt LC sie ab... put specialFolderPath("resources") & "/testsqlite.sqlite" into tQuellDB ## ... aber nur hier dürfen wir sie benutzen put specialFolderPath("documents") & "/testsqlite.sqlite" tZielDB ## Datei noch nicht vorhanden, muss der allererste Start der App sein. ## Dann also die DB in den Ordner kopieren, wo wir schreiben dürfen: if there is NOT a file tZielDB then put url("binfile:" & tQuellDB) into url("binfile:" & tZielDB) end if ## Dein openstack Kram hier, sofern vorhanden... ## ... end openstack
Logisch, oder?
Nun kannst Du sie in Deinen Skripten (Standalone UND IDE) so ansprechen:
... ## Wir sind auf dem Handy: if the environment = "mobile" put specialfolderpath("documents") & "/testsqlite.sqlite" into die_datenbank else ## Wir sind in der IDE: put specialfolderpath("resources") & "/testsqlite.sqlite" into die_datenbank end if put revOpenDatabase("sqlite", die_datenbank, , , , ) into dbid ...
Hinweis:
Intern nutzt LC auf JEDER Platform den SLASH / als Dateipfadtrenner
Nur Windows nutzt den Backslash \
Daher solltest du bei Dateipfaden den auch immmer nutzen, auch unter Windows:
-> C:/Users/Winternet/Documents/MyLiveCode/testsqlite.sqlite
So musst du nicht verschiedene Schreibweisen benutzen, wenn du mal was für iOS, Mac oder auch Android programmieren willst/musst!Gruß
Klaus
-
Mai 12, 2019 um 20:29 Uhr #14776
Hallo Klaus,
irgendwie klappt das nicht. Dieses umkopieren…
Sind die Ordner auf dem Smartphone so versteckt, dass ich sie nicht finden kann?
Ich versuche es mal weiter.
Grüße
Gerti -
Mai 12, 2019 um 20:46 Uhr #14778
Ich besitze kein Handy oder Tablet, aber soweit ich weiß, liegen diese Odner innerhalb des APK Pakets. Möglicherweise sind die aber nicht so ohne weiteres sichtbar.
Aber was genau klappt nicht, bzw. woran siehst Du, daß etwas nicht funktioniert?
Und bitte poste auch mal Dein Skript! -
Mai 13, 2019 um 08:46 Uhr #14794
Hallo Klaus,
inzwischen klappt auch das….mühsam ernährt sich das Eichhörnchen.
Hat etwas gedauert, bis ich das mit den Pfaden kapiert habe :o).Alles verhält sich jetzt, wie gewünscht.
Jetzt kann ich mich an meine eigentliche App Idee machen. Das war nur ein Exkurs.
Danke für die tolle Unterstützung.Wird sicherlich nicht meine letzte Frage sein.
Grüße
Gerti
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.