Android Sqlite字段重复则更新,不重复则添加

有时候会有这样的需求:更新数据库中的某一列,如果该表中有某个字段,就更新该列,如果没有则添加到表中。
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();

注意:这种方法是删除原有再添加,所以主键会不一样

    原文作者:张老梦
    原文地址: https://www.jianshu.com/p/1bb765c74cae
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞