sqlite

  • Dieses Thema hat 7 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 2 Jahre, 1 Monat von Anonym.
Ansicht von 7 Antwort-Themen
  • Autor
    Beiträge
    • #23440
      Anonym
      Inaktiv

      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

    • #23449
      foto2004
      Teilnehmer

      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

    • #23456
      Anonym
      Inaktiv

      Danke für den Tip, das probiere ich aus!!

      LG Andreas

    • #23458
      Anonym
      Inaktiv

      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

    • #23463
      Axwald
      Teilnehmer

      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ß!

    • #23467
      Klaus Major
      Verwalter

      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
    • #23486
      Anonym
      Inaktiv

      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

    • #23774
      Anonym
      Inaktiv

      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

Ansicht von 7 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.