1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Applikation mit vordefinierter Datenbank erstellen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von quiddix, 03.08.2010.

  1. quiddix, 03.08.2010 #1
    quiddix

    quiddix Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    63
    Erhaltene Danke:
    1
    Registriert seit:
    09.02.2010
    Hallo,

    ich möchte ein Programm erstellen, bei dem es notwendig ist zuvor eine Datenbank zu erstellen. Das heißt:

    Wenn der Benutzer zum ersten mal das Programm heruntergeladen hat und es installiert hat, soll es bereits einige unveränderbare Beispieldaten haben.

    Da es relativ viele Daten am Anfang sind, und der Benutzer keinen Zugriff auf diese Daten haben soll (eventuell ein gerootetes Handy), sollten die Daten beispielsweise nicht einfach in einer .csv Datei liegen und beim ersten Start importiert werden.

    Vermutlich ist es aber auch zu aufwendig, die Datenbank direkt im Code zu füllen, da es an die 1000 Datensätze sind.

    Ist es irgendwie möglich die Datensätze, die sich in einer .csv Datei befinden einmalig beim Programmstart als Start-Datensatz zu importieren und die .csv Datei dann zu löschen, so dass es für keine möglich ist diese Daten zu extrahieren?

    Gibt es Alternativen?

    Danke für die Antworten
     
  2. swordi, 03.08.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ja das ist möglich
     
  3. TheEvilOne, 03.08.2010 #3
    TheEvilOne

    TheEvilOne App-Anbieter (In-App)

    Beiträge:
    452
    Erhaltene Danke:
    50
    Registriert seit:
    19.05.2010
    So mache ich das im Augenblick auch. Beim Start der Anwendung wird geprüft, ob die Datensätze vorhanden sind. Wenn nicht, werden sie aus einer CSV-Datei einmalig importiert.

    Problem ist, dass wenn ein Update eingespielt wird, die Datenbank somit auch wieder neu angelegt und die Daten neu eingelesen werden müssen (etwaige Benutzereingaben sind somit verloren). Eine Lösung wäre die Datenbank auf die SD-Karte auszulagern und diese bei einem Update nicht neu zu erstellen.

    Ich lese Momentan beim erstmaligen Anwendungsstart ca. 500 Datensätze ein und das dauert mir eigentlich jetzt schon zu lange. Deswegen werde ich es wohl demnächst so lösen, dass ich mir die fertige Datenbank nach der Installation aus dem Internet runterlade und auf der Speicherkarte ablege.

    Wenn jemand noch andere Vorschläge hat immer her damit :)

    Viele Grüße
     
  4. quiddix, 03.08.2010 #4
    quiddix

    quiddix Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    63
    Erhaltene Danke:
    1
    Registriert seit:
    09.02.2010
    Ok das heißt du überprüfst beim Start der Anwendung ob die Datenbank leer ist. Wenn das der Fall ist, muss der Benutzer die Anwendung frisch installiert haben.

    Also wird dann eine .csv Datei, die sich z.B. im Assets-Ordner befindet eingelesen, deren Datenbankeinträge importiert. Löschst du dann danach die Datei bzw. ist das überhaupt möglich? Mir ist es halt wichtig, dass keiner die Daten, die in dieser Datei stehen einfach so kopieren kann. Das sollte nämlcih mit einem gerooteten Handy möglich sein oder?

    Wegen dem Update:
    Warum muss da die Datenbank komplett neu eingespielt werden? Wenn sich an der Grundstruktur nichts geändert werden kann, kannst du doch theoretisch einfach ein Update herausbrigen, mit größere Version und DB nummer. Das geupdatete Programm prüft dann beim Start erneut, ob die Datenbank leer ist ( das ist ja nichtmehr der Fall weil ja bereits Daten aus der .csv Datei eingelesen wurden) und da das nicht der Fall ist wird also nichts neues importiert.

    MFG TW
     
  5. TheEvilOne, 03.08.2010 #5
    TheEvilOne

    TheEvilOne App-Anbieter (In-App)

    Beiträge:
    452
    Erhaltene Danke:
    50
    Registriert seit:
    19.05.2010
    Ja stimmt, das mit der höheren Version hab ich noch nicht getestet. Kann sein, dass damit die Daten in der Datenbank erhalten bleiben. Meine erste App ist leider selbst noch nicht soweit, dass sie in den Market gestellt werden kann. Deswegen gibts auch hier noch ein paar "Ungereimtheiten".

    Die CSV-Datei liegt bei mir im Ordner /res/raw und ich greife über

    Code:
    activity.getResources().openRawResource(R.raw.filename);
    
    darauf zu. Die zu löschen habe ich noch nicht versucht, aber es gibt eine entsprechende Methode activity.deleteFile(String name), mit der das eigentlich gehen sollte.

    Falls das nicht gehen sollte, kannst Du die Datenbank ja aus dem Internet auf das Endgerät runterladen, dann gibts auch keine Datei zu löschen.
     
  6. sharky, 03.08.2010 #6
    sharky

    sharky Erfahrener Benutzer

    Beiträge:
    223
    Erhaltene Danke:
    45
    Registriert seit:
    12.12.2009
    Phone:
    Samsung Galaxy S5 G900F
    Vielleicht habe ich da ja nen denkfehler, aber was hindert den user denn daran die beispieldaten nach erstmaligem programmstart aus der dann angelegten datenbank auszulesen? auch nicht komplizierter als eine in der apk gelieferte csv datei auszulesen. das löschen der datei macht da für mich keinen sinn.
     

Diese Seite empfehlen