sqlite Datenbank im Vorfeld erstellen

H

Han Solo

Neues Mitglied
0
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!
 
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.
 
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.
 
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
 
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
 
  • Danke
Reaktionen: Droidspirit
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:

Ähnliche Themen

R
Antworten
6
Aufrufe
994
swa00
swa00
5
Antworten
0
Aufrufe
1.141
586920
5
Zurück
Oben Unten