有时候会有这样的需求:更新数据库中的某一列,如果该表中有某个字段,就更新该列,如果没有则添加到表中。
1. 先要在建表的时候把不能重复的字段设置为唯一(unique):
private String createZhiHuSql="create table Zhihu(" +
"id integer primary key autoincrement," +
"content text,"+
"date text unique,"+//唯一字段
"getTime text"+
")";
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createZhiHuSql);
}
这里吧date字段设为唯一
2. 使用SQLiteDatabase的insertWithOnConflict方法进行冲突时替换
SQLiteDatabase db = MyApplication.dbUtil.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("date", new JsonParser().parse(response).getAsJsonObject().get("date").getAsString());
values.put("content", response);
values.put("getTime", String.valueOf(System.currentTimeMillis()));
//db.insertWithOnConflict方法在有唯一冲突时替换
db.insertWithOnConflict("Zhihu", null, values, SQLiteDatabase.CONFLICT_REPLACE);
values.clear();
注意:这种方法是删除原有再添加,所以主键会不一样