SQLite-Datenbank austauschen - wo finde ich die?

  • Antworten:7
Frank Rudolf
  • Forum-Beiträge: 215

19.11.2015, 11:19:11 via Website

Hallo,

ich möchte eine Android-App mit SQLite erstellen. Dabei sollen ca. 2000 Datensätze verwaltet werden. Als Alternative käme ein DatenZugriff per XML- oder Textdatei in Frage.

In der Regel legt man die SQLite-Datenbank beim erstmaligen Start der App an und füllt die entsprechende Tabelle nach und nach per Benutzung der App (manuelle Eingabe). Meine ca. 2000 Datensätze sind aber schon existent. Ich möchte also die fertige Tabelle in die SQLite-Datenbank integrieren.

Ich habe bereits mit dem Tool SQLite DB Browser eine SQLite-Datenbank mit einer entsprechenden Tabelle erstellt. Fehlt nur noch die Einbindung in ein Android-Projekt. Und hier beginnen meine Schwierigkeiten.

Vermutlich braucht man nur die entsprechende SQLite-Datei an einen bestimmten Ort zu speichern, vermutlich /Data/Data/PackageName etc. Allerdings finde ich diesen Pfad nicht auf meinem ASUS-Tablet. Nach meinen gestrigen Recherchen liegt das wohl daran, dass man hier irgendwas rooten muss?

Ich suche also nach einer möglichst eleganten Methode, um eine SQLite-Datenbank auszutauschen (alte löschen, neue reinkopieren). Elegant, weil ich diese Datenbank ja auch öfters aktualisieren muss (Synchronisieren mit der Desktop-Version).

Vielleicht habt ihr ja eine Idee?

Danke!

Antworten
Fabian Simon
  • Forum-Beiträge: 359

19.11.2015, 13:38:35 via Website

Qautsch.... in Android ist SQL Lite immer mit integriert.
Jedoch kannst du diese nicht einfach austauschen, da diese von allen Apps als DB genutzt wird...

Nutzte einfach die exsitierende DB um deine Daten abzuspeichern.
Das einzige was du schreiben muss ist ein Parser, mit dem du die schon eingetragen Daten in diese einfügst.
z.B.: per File read and parsing oder download von einer webseite etc.
Anleitung zu nutzen: http://developer.android.com/training/basics/data-storage/databases.html

Antworten
Frank Rudolf
  • Forum-Beiträge: 215

19.11.2015, 14:16:52 via Website

Fabian,

Du hast mich falsch verstanden. Natürlich ist SQLite als DatenbankManagementSystem in Android fest integriert.

Mir geht es aber um bestimmte einzelne Datenbanken wie zB Kunden oder Artikel, die man innerhalb des SQLite-Systems ansprechen kann. Und diese einzelnen Datenbanken möchte ich einfach gelegentlich per Löschen und Einfügen im Dateisystem von Android austauschen (zwecks Synchronisierung mit einer gleichen Desktopversion und Erstbestückung mit 2000 Datensätzen, weil ich die nicht per Hand eingeben möchte).

Habe eben noch was gelesen über Zugriff über SD-Cards. Mit dieser Variante kann ich vielleicht die entsprechende Database sehen (siehe meinen Eingangsbeitrag!). data/data/PackageName etc. sehe ich ja (noch) nicht.

— geändert am 19.11.2015, 14:22:33

Antworten
Gelöschter Account
  • Forum-Beiträge: 438

19.11.2015, 14:17:40 via Website

SQLiteOpenHelper ableiten und Daten in onCreate bzw. onUpgrade reinblasen.
Siehe http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

@Mods: Irgendwie scheint Inline-Code nicht zu funktionieren. Backtick+BlahBlah+Backtick wird in der Vorschau korrekt angezeigt, wenn man es dann speichert, sieht es so aus blahBlah`

— geändert am 19.11.2015, 15:44:41 durch Moderator

Aktuelles Entwicklungsprojekt: (thinking) Sudoku Dojo Free (lightbulb)
Ich freue mich über Tester/innen.

Frank Rudolf

Antworten
Frank Rudolf
  • Forum-Beiträge: 215

19.11.2015, 15:43:08 via Website

Zwischenergebnis:

Mit dem FileExplorer des AndroidDeviceMonitors kann ich den Pfad data/data/... mit der normalerweise von SQLite erzeugten Database sehen. Jedoch scheint man hier keine Datei in diesen oder einen anderen Ordner kopieren zu können.

Oder gibt es vielleicht einen Trick, mit dem das geht?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.11.2015, 15:46:46 via Website

Wie gesagt das geht nur mit Root, aber das ist nicht das was du willst, denn dann musst du das immer von hand ersetzen und beim intallieren der App ist es auch falsch..
Du musst dir eine existierende DB n die Assets legen und diese dann in den lokalen speicher kopieren.
Bei akualisierungen musst du dann die differenz prüfen und gewisse Tabelle aktualisieren etc.

@D. Zielke.

Da hast du recht ich gebe das mal an die Technik weiter :) 

— geändert am 19.11.2015, 15:47:13

LG Pascal //It's not a bug, it's a feature. :) ;)

Frank Rudolf

Antworten
Frank Rudolf
  • Forum-Beiträge: 215

19.11.2015, 16:30:47 via Website

Du musst dir eine existierende DB n die Assets legen und diese dann in
den lokalen speicher kopieren.

Ja, mit dem res/raw-Ordner habe ich auch schon etwas experimentiert. Was meinst Du genau mit dem "lokalen Speicher" Wie adressiere ich den?

— geändert am 19.11.2015, 16:31:17

Antworten