1

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

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

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

谢谢!

4

2 回答 2

2

在单个 sqlite 事务中分两步执行此操作:

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

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

于 2013-10-02T10:02:26.417 回答
0

首先,您使用游标查询数据库中是否存在值,如果它为空,则进行插入,否则如果所需字段与您已有的字段不同,则进行更新。在任何其他情况下什么都不做 // 一些伪代码

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 

           }
于 2013-10-02T10:13:27.320 回答