Обновление базы данных SQL, когда таблицы не изменились, но метод вставки - PullRequest
0 голосов
/ 16 марта 2019

У меня есть этот класс базы данных SQLite, в который я вставляю объекты, и я хотел добавить больше объектов, моя текущая версия - одна, но я знаю, что эффект не будет виден, пока я не обновлюсь до версии 2.

Здесь

 @Override
    public void onCreate(SQLiteDatabase db) {

// my method

insertItems(db);

}

//where I have my items added
 private void insertItems(SQLiteDatabase db) {

        ArrayList<ExpenseItem> items = new ArrayList<>();
}

Как мне обновить или обновить эту базу данных? У меня есть таблицы, но таблицы не изменяются только методом insertItems.

Так что мне здесь делать?

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // The database is still at version 1, so there's nothing to do be done here.

}

1 Ответ

0 голосов
/ 16 марта 2019

Я считаю, что ваша проблема в том, что вызов для вставки элементов находится в методе onCreate . Метод onCreate будет запускаться автоматически только один раз при создании базы данных. Таким образом, код / ​​строка insertItems(db); будет выполняться только один раз.

Вы можете использовать onUpgrade для выполнения insertItems , отметив, что код должен проверить, что версия меняется с 1 на 2. В этом случае вы можете иметь: -

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2) {
        insertItems(db);
    }
    // The database is still at version 1, so there's nothing to do be done here.
}

вместе с изменением версии на 2.

  • Это предполагает
    • что insertItems не будет добавлять дубликаты,
    • что метод onUpgrade не удалит таблицы и вызовет onCreate при изменении версии с 1 на 2.

Лично на этом этапе может быть достаточно просто удалить приложение и выполнить повторный запуск (при условии, что новые элементы добавляются в код вставки вместо замены кода вставки и что другие существующие данные, если таковые имеются, могут быть потеряны или будут воссоздать).

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