sqlite

Ansicht von 7 Antwort-Themen
  • Autor
    Beiträge
    • #23440
      Anonym

        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

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

            LG Andreas

          • #23458
            Anonym

              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
                Administrator

                  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

                    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

                      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.