При установке новой / существующей версии приложения база данных SQLite создается вместо повторного использования - PullRequest
2 голосов
/ 25 февраля 2011

При установке новой / существующей версии приложения база данных SQLite создается вместо повторного использования - существующая база данных исчезает.

Вот как мои классы

class HDDBAdapter {<br> int DB_LOCA_VERSION = 1;<br> HDDBOpenHelper hdHelper; </p> <pre><code> HDDBAdapter(_ctxt) { hdHelper = new HDDBOpenHelper(_ctxt, "mydb.db", null, DB_LOCA_VERSION); } open() { try { db =hdHelper.getWritableDatabase(); } catch ... } static class HDDBOpenHelper extends SQLiteopenHelper { public HunyDewDBOpenHelper(Context ct, String n, CursorFactory cf, int v) { super(ct, n, cf, vv); } private static final String DB_CREATE_BOX = "create table " + "mydb.db" + "(" + ... + ");"; public void onCreate(SQLiteDatabase arg0) { arg0.setVersion(DB_LOCA_VERSION); arg0.execSQL(DB_CREATE_BOX); } public void onOpen(SQLiteDatabase db) { // TODO Auto-generated method stub super.onOpen(db); }

}

При первом запуске приложения приложение создает базу данных со своими данными.Затем я загружаю более новую версию приложения - DB_LOCA_VERSION остается прежним.В более новой версии это логика, не связанная с базой данных, которая была изменена.

Итак, сначала я «принудительно остановил» приложение («Очистка данных» не выполняется), а затем удалил приложение.Теперь я запускаю более новую версию - эта более новая версия не использует существующую базу данных - она ​​создает новую.Это почему?Я хочу использовать существующую базу данных.Пожалуйста, дайте мне знать, если я что-то здесь упускаю.Любые подсказки / указатели / вопросы будут полезны.

Когда я его устанавливаю, он явно выходит из строя внутри getWritableDatabase , поэтому - onCreate вызывается первым - до onOpen .Обратите внимание, что конструктор для HDDBAdapter не изменяется во всех версиях приложения - поэтому не должен ли он получить hdHelper для существующего "mydb.db" ?И не иметь getWritableDatabase причины onCreate для вызова.

Спасибо

Ответы [ 2 ]

5 голосов
/ 25 февраля 2011

Итак, сначала я «принудительно остановил» приложение («Очистка данных» не выполняется), а затем удалил приложение. Теперь я запускаю более новую версию - эта более новая версия не использует существующую базу данных - она ​​создает новую. Почему это так?

Поскольку при удалении приложения все базы данных для этого приложения будут удалены.

0 голосов
/ 24 ноября 2013

Во время удаления можно изменить файлы db на sdcard или некоторые другие папки и
вернуть их после установки нового приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...