更新SQLite数据库中的所有数据?

时间:2018-04-29 18:11:04

标签: android sqlite android-sqlite

之前已经提出过这个问题,但我仍然没有找到更新SQLite数据库中所有数据的好例子。

我有一个名为" ItemDatabaseModel"的模型类。包含" item_id,category,description,image_url,ect"等值。更新这些ItemDatabaseModel的列表时,我目前一次更新一个属性,但最终结果是所有数据都被最后更新的项覆盖。

以下是我的更新方式。我首先遍历我想要更新的ItemDatabaseModel列表。

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});     
}

正在调用的更新方法接受模型,然后调用update方法来更新数据库

public void update(T model, String where, String[] whereArgs) {
    mDatabase = getWritableDatabase();
    if (mDatabase.isOpen()) {
        mDatabase.update(model.getTableName(), model.getContentValues(), where, whereArgs);
    }
}

然后我更新数据库

{{1}}

根据我的观察,问题可能在哪里,但我不知道如何调整它。此外,是否有更好的实施更新新数据列表?先谢谢!

1 个答案:

答案 0 :(得分:1)

对于那些想知道解决此问题需要更正的人,以下是最后的更改。

将您的项目列表迭代到udpate

for (int i = 0; i < alItemDb.size(); i++) {
     dbProvider.update(alItemDb.get(i));
}

传递整个模型,以便以后可以从中检索contentValues,并根据唯一标识符(id,email,ect)执行更新

public void update(ItemDatabaseModel itemDatabaseModel) {
     mProvider.update(itemDatabaseModel, ItemSchema.ITEM_ID + " = ?",  
}

更新您的数据库

public void update(T model, String where, String[] whereArgs) {
    mDatabase = getWritableDatabase();
    if (mDatabase.isOpen()) {
        mDatabase.update(model.getTableName(), model.getContentValues(), where, whereArgs);
    }
}