问题背景: 我有两个表,其中主键是文本字段。
当我对相同的数据重复使用 SQLiteDatabase.insertWithOnConflict(myTable, null, myValues, SQLiteDatabase.CONFLICT_REPLACE) 时,我看到返回的值不断增加。
所以看起来正在对相同的数据集执行 INSERT(而不是 REPLACE)。
问题: 但是,使用“SQLite 数据库浏览器”查看这些表时,我看到了执行 REPLACE 时我期望的正确记录数。
让我感到困惑的根源是 Android 文档的描述,其中指出: *返回 新插入行的行 ID 或现有行的主键如果输入参数 'conflictAlgorithm' = CONFLICT_IGNORE 或 -1 如果有任何错误*
问题: 为什么 REPLACE 已经完成,但没有返回现有数据的行 ID?
最佳答案
在我看来它正在按照您的要求做事?您要求它替换,它确实做到了。它将删除旧行并插入新行。
如果您改为传递 CONFLICT_IGNORE,它将保留旧行并返回该 ID。
关于android - Android 上的 SQLite : insertWithOnConflict() returning ever-increasing results for same data sets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336507/