Этот вопрос задавался ранее, но я все еще не нашел хорошего примера для обновления всех данных в вашей базе данных SQLite.
У меня есть класс модели с именем "ItemDatabaseModel", который содержит такие значения, как "item_id, category, description, image_url, ect". При обновлении списка этих ItemDatabaseModels я в настоящее время обновляю каждый атрибут по одному, но в результате все данные перезаписываются последним обновленным элементом.
Вот как я делаю свое обновление. Я начинаю с итераций в моем списке ItemDatabaseModels, которые я хочу обновить.
for (int i = 0; i < alItemDb.size(); i++) {
dbProvider.update(alItemDb.get(i));
}
Вызываемый метод обновления принимает модель, а затем вызывает метод обновления для обновления базы данных
public void update(ItemDatabaseModel itemDatabaseModel) {
mProvider.update(itemDatabaseModel, ItemSchema.CATEGORY + " =?", new String[]{itemDatabaseModel.category});
mProvider.update(itemDatabaseModel, ItemSchema.ITEM_ID + " =?", new String[]{itemDatabaseModel.itemId});
mProvider.update(itemDatabaseModel, ItemSchema.DESCRIPTION + " =?", new String[]{itemDatabaseModel.description});
mProvider.update(itemDatabaseModel, ItemSchema.IMAGE_URL_1 + " =?", new String[]{itemDatabaseModel.imageUrl1});
mProvider.update(itemDatabaseModel, ItemSchema.IMAGE_URL_2 + " =?", new String[]{itemDatabaseModel.imageUrl2});
mProvider.update(itemDatabaseModel, ItemSchema.IMAGE_URL_3 + " =?", new String[]{itemDatabaseModel.imageUrl3});
}
Затем я обновляю базу данных
public void update(T model, String where, String[] whereArgs) {
mDatabase = getWritableDatabase();
if (mDatabase.isOpen()) {
mDatabase.update(model.getTableName(), model.getContentValues(), where, whereArgs);
}
}
По моим наблюдениям, проблема может заключаться в том, где, но я не знаю, как это отрегулировать. Кроме того, есть ли лучшая реализация для обновления списка новых данных? Спасибо заранее!