如何更新 SQLiteDatabase 中的单个(或多个,但不是全部)列?
How can I update a single (or multiple, but not all) columns in an SQLiteDatabase?
我的项目使用 SQLitDatabase
,我通常通过以下方式更新:
- 获取一行包含的所有值(比方说 v1、v2 和 v3)
- 放回所有值,并替换我需要更新的值。
示例:
我要更新v2
。
ContentValues values = new ContentValues();
values.put(v1_COLUMN, v1); // Old value, gotten earlier
values.put(v2_COLUMN, v2_new); // New value, calculated earlier
values.put(v3_COLUMN, v3); // Old value, gotten earlier
db.update(TABLE_name, values, "_id=?", new String[]{id});
我使用这种方法,即使我只需要更新 1 列(请记住我的一些表有超过 3 列)。
如何只更新实际需要更新的列?
您的代码没问题,但不需要将旧值放入值中。只需输入新值
ContentValues values = new ContentValues();
values.put(v2_COLUMN, v2_new); // New value, calculated
db.update(TABLE_name, values, "_id=?", new String[]{id});
我的项目使用 SQLitDatabase
,我通常通过以下方式更新:
- 获取一行包含的所有值(比方说 v1、v2 和 v3)
- 放回所有值,并替换我需要更新的值。
示例:
我要更新v2
。
ContentValues values = new ContentValues();
values.put(v1_COLUMN, v1); // Old value, gotten earlier
values.put(v2_COLUMN, v2_new); // New value, calculated earlier
values.put(v3_COLUMN, v3); // Old value, gotten earlier
db.update(TABLE_name, values, "_id=?", new String[]{id});
我使用这种方法,即使我只需要更新 1 列(请记住我的一些表有超过 3 列)。
如何只更新实际需要更新的列?
您的代码没问题,但不需要将旧值放入值中。只需输入新值
ContentValues values = new ContentValues();
values.put(v2_COLUMN, v2_new); // New value, calculated
db.update(TABLE_name, values, "_id=?", new String[]{id});