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

sqlite Datenbank im Vorfeld erstellen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Han Solo, 14.07.2010.

  1. Han Solo, 14.07.2010 #1
    Han Solo

    Han Solo Threadstarter Neuer Benutzer

    Beiträge:
    1
    Erhaltene Danke:
    0
    Registriert seit:
    14.07.2010
    Hallo zusammen, ich bin neu hier!

    Gibt es eine Möglichkeit eine fertige sqlite Datenbank auszuliefern, sodass diese nicht erst beim ersten Start erstellt werden muss?

    Ich habe hier 10 Datenbanken mit jeweils 180.000 Einträgen und würde diese daher ungern von der App selbst erstellen lassen und direkt fertig mitliefern. Ist das möglich?

    Danke!
     
  2. TheEvilOne, 14.07.2010 #2
    TheEvilOne

    TheEvilOne App-Anbieter (In-App)

    Beiträge:
    452
    Erhaltene Danke:
    50
    Registriert seit:
    19.05.2010
    Das muß sogar möglich sein. Viele Apps greifen auf eine Datenbank zu und da wäre es ja ein Unding, wenn man diese erst bei der Installation erzeugen bzw. mit Daten füllen müßte.

    Erzeugt man eine SQLite-DB, wird diese im System in eine Datei abgelegt (wo genau das weiß ich grad auch nicht, da müßte man nochmal in der Doku nachlesen). Diese kannst Du ja dann kopieren und mit ausliefern.
     
  3. MichaelS, 14.07.2010 #3
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    Einfach die DB in den Ordner Asset legen ;) Von dort kannst du direkt laden oder diese auf die SD Card auslagern um darauf Updates zu fahren oder halt immer nen App Update machen, mit der neuen Version im Asset Ordner.
     
  4. TheEvilOne, 14.07.2010 #4
    TheEvilOne

    TheEvilOne App-Anbieter (In-App)

    Beiträge:
    452
    Erhaltene Danke:
    50
    Registriert seit:
    19.05.2010
    Ich habe mir das jetzt auch mal angeschaut.

    Wenn ich eine SQLite Datenbank verwende wird diese ja in folgendem Verzeichnis abgelegt:

    /data/data/<packagename>/databases/<dbname>

    In einem anderen Thread habe ich gelesen, dass man im ContentProvider statt des DatabaseHelpers direkt die SQLiteDatabase verwenden kann.

    Ich habe jetzt eine Klasse erstellt, die von der Klasse SQLiteOpenHelper erbt. In der onCreate(SQLiteDatabase db) Methode werden über

    Code:
    db.execSQL("CREATE TABLE IF NOT EXISTS " ...
    
    die Statements ausgeführt, die die Tabellen anlegen. Kann mir jemand mal kurz anhand eines Beispiels zeigen/erklären, was ich nun tun muß, um dies (also das Erzeugen und Zugreifen der Datenbank im assets-Ordner) über den ContentProvider zu realisieren?

    Btw: Als Nachteil wurde bei dieser Methode beschrieben, dass wenn die Datenbank im assets-Ordner liegt, auch andere Programme darauf zugreifen können. Dies sei nicht möglich, wenn sie im oben angegebenen Programm-Pfad liegt.

    Danke und viele Grüße
     
  5. swordi, 14.07.2010 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ich hab die ersten 500 bytes meiner sqlite db mit junk überschrieben

    und beim start tausch ich diese bytes durch die richtigen aus. so ist die db solange meine app sichtbar ist brauchbar. sobald was anderes in den vordergrund kommt, wird die db auf der sd karte wieder "zerstört" und niemand kann sie lesen.

    mitgeliefert hab ich die db nicht über asset ordner, sondern beim ersten start wird sie von einem server runtergeladen. hält die apk klein
     
    TheEvilOne bedankt sich.
  6. TheEvilOne, 14.07.2010 #6
    TheEvilOne

    TheEvilOne App-Anbieter (In-App)

    Beiträge:
    452
    Erhaltene Danke:
    50
    Registriert seit:
    19.05.2010
    Hey, super Idee. Das werd ich mir auf jeden Fall mal vormerken :)

    Btw: Was meine Anfrage im letzten Post angeht ist die Sache um ContentProvider doch etwas komplexer, weshalb ich von niemanden erwarten will, dass er mir das hier vorkaut. In dem Buch "Android - Grundlagen & Programmierung" ist das Thema ganz gut beschrieben und ich hab auch schon ein paar Beispiele ausgemacht.
     
    Zuletzt bearbeitet: 14.07.2010

Diese Seite empfehlen