SQLite-Datenbank austauschen - wo finde ich die?

  • 2 Antworten
  • Letztes Antwortdatum
J

Jusehr

Neues Mitglied
0
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!
 
Zuletzt bearbeitet:
Vorgehensweise ist die: Ordner "assets" in /src/ erstellen und dort kommt die DB rein. Dann die Datenbank beim ersten Starten von dort laden. Hier ein paar Zeilen Code dazu:

Code:
/**
* Copy existing database from assets into app.
*/
// /**
// * Creates a empty database on the system and rewrites it with your own database.
// */
// public void createDatabase() throws IOException {
// boolean dbExist = checkDatabase();
//
// if (dbExist) {
// // do nothing - database already exist
// } else {
// // By calling this method and empty database will be created into the default system path
// // of your application so we are gonna be able to overwrite that database with our database.
// this.getReadableDatabase();
// try {
// copyDatabase();
// } catch (IOException e) {
// throw new Error("Error copying database");
// }
// }
// }
// /**
// * Check if the database already exist to avoid re-copying the file each time you open the application.
// *
// * @return true if it exists, false if it doesn't
// */
// private boolean checkDatabase() {
// SQLiteDatabase existingDb = null;
//
// try {
// existingDb = SQLiteDatabase.openDatabase(DB_PATH, null, SQLiteDatabase.OPEN_READONLY);
//
// } catch (SQLiteException e) {
// Log.e(TAG, "Database does not exist!");
// }
//
// if (existingDb != null) {
// existingDb.close();
// }
//
// return existingDb != null;
// }
// /**
// * Copies your database from your local assets-folder to the just created empty database in the
// * system folder, from where it can be accessed and handled.
// * This is done by transfering bytestream.
// */
// private void copyDatabase() throws IOException {
// InputStream myInput = mCtx.getAssets().open(DATABASE_NAME);
//
// // Open the empty db as the output stream
// OutputStream os = new FileOutputStream(DB_PATH);
//
// // transfer bytes from the inputfile to the outputfile
// byte[] buffer = new byte[1024];
// int length;
// while ((length = myInput.read(buffer)) > 0) {
// os.write(buffer, 0, length);
// }
//
// // closing the streams
// os.flush();
// os.close();
// myInput.close();
// }
// public void openDatabase() throws SQLException {
// mDatabase = SQLiteDatabase.openDatabase(DB_PATH, null, SQLiteDatabase.OPEN_READONLY);
// }
 
Vielen Dank missspelled!

Ich werde das eventuell ausprobieren.
 
Zurück
Oben Unten