我需要插入或更新,我找到了 SQLiteDatabase 的 insertWithOnConflict 方法,但我不知道它如何检查该条目是否已存在。
理论上,我需要一个“Where”参数来检查某个 ID 是否存在,如果存在,它应该替换所有其他列。
这就是我现在所拥有的,但我不认为第二个参数是唯一的 id
ContentValues args = new ContentValues();
args.put(AppDatabase.COLUMN_ID, entry.getId());
args.put(AppDatabase.COLUMN_NAME, entry.getAppname());
args.put(AppDatabase.COLUMN_URL, entry.getAppUrl());
database.insertWithOnConflict(AppDatabase.TABLE_FILELIST, COLUMN_ID, args, SQLiteDatabase.CONFLICT_REPLACE);
我该如何管理这种行为?
确保表中有一些适当的约束,例如PRIMARY KEY
or UNIQUE
.
插入时,通过以下方式向此约束列添加一个值ContentValues
。如果插入新行会违反某些约束,则首先删除冲突的行,然后插入新行。
就你而言,COLUMN_ID
看起来是一个不错的候选人PRIMARY KEY
约束。第二个参数nullColumnHack
有价值COLUMN_ID
在您的代码中不是必需的,您可以将其传递为null
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)