При установке новой / существующей версии приложения база данных 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
для вызова.
Спасибо