SQLite数据库插入或替换(如果更改)



我正在寻找一种填充/更新SQLiteDatabase表的方法。在某些情况下,我需要收到通知(通过某些返回值)。每行包含一个需要稍后下载的文件的 URL。

  1. 不存在:插入它并通知我应列出此行以供下载。
  2. 行确实存在,但我尝试插入的值与数据库中已有的值相同:什么都不做,不要通知我应该下载它。
  3. 确实存在,我尝试插入的值与数据库中已有的值不同:替换此行,通知我应该下载此行。

我一直在寻找答案,但似乎找不到好东西。我应该使用insertWithOnConflict()replace()replaceOrThrow()、...

谢谢!

分两步完成,包装在单个 sqlite 事务中:

  1. 按行查询。如果未找到 rowid 或未找到结果,请插入新的并下载。

  2. 比较新行的 url 和在步骤 1 中检索到的行。仅当 url 不同时,更新行并下载,否则无操作。

首先,使用光标查询数据库中是否存在值,如果值为空,则进行插入,否则如果必填字段与您已有的字段不同,则进行更新。 在任何其他情况下,不执行任何操作 一些伪代码

Cursor cursor=_db.query("TABLE", null, TABLEID + "=?", new String[]{id}, null, null, null);

        if(cursor.getCount()<1) // row Not Exist
        {
            cursor.close();
               ....assign values
               SQLiteDatabase _db.insert("TABLE_Name", null, Table_object);
               download ...ok
        }
        cursor.moveToFirst();
           if( cursor[field] != "same_value" ) {
           SQLiteDatabase _db.update("TABLE_Name", null, Table_object);
            download ...ok 
           }

最新更新