Android не обновляет базу данных SQLite - PullRequest
3 голосов
/ 31 августа 2011

У меня возникли проблемы с базой данных SQLIte в приложении Android. Проблема в том, что база данных никогда не обновляется, даже после нескольких перезапусков эмулятора, Eclipse или после удаления из DDMS.

Это мой метод onCreate, расположенный в классе, который расширяет SQLiteOpenHelper:

public void onCreate(SQLiteDatabase database) {
    try {
        database.execSQL(ESSENCE_TABLE_CREATE);
        database.execSQL(PACCO_TABLE_CREATE);
        database.execSQL(TAVOLE_TABLE_CREATE);
        database.rawQuery("insert into essenza values(1, 'Rovere')",
                null); // added later
    } catch (SQLException e) {
        Log.e("DB", e.getMessage());
    }
}

После создания экземпляра помощника я запрашиваю ссылку на базу данных:

    helper = new DBHelper(context, dbpath + "/" + DATABASE_NAME);
    database = helper.getWritableDatabase();

Кажется, что оператор rawQuery (который был добавлен позднее) не выполняется и что используемая база данных вместо этого кэшируется из предыдущей версии. Я также пытался изменить версию базы данных, но это не сработало. Я что-то пропустил? Заранее спасибо.

1 Ответ

6 голосов
/ 31 августа 2011

У вас есть два варианта:

  1. Используйте DDM для удаления файла базы данных с вашего устройства (смотрите / data / data /).Это заставит Android снова запускать onCreate.
  2. В конструкторе увеличивайте версию базы данных, которую вы передаете SQLiteOpenHelper.Добавьте необработанный запрос к onUpgrade.

Возможно, вам нужен вариант 1. Вариант 2 лучше, если у вас есть пользователи вашего приложения, чьи базы данных вы хотите обновить.

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