Sqlite中不进行实际更改的Update语句报告更新的行



我有一个表,它有一个主键列idcolumn和另一个int列datacolumn

它已经存在一行:

idcolumn=2
datacolumn=1

我执行以下声明:

ContentValues cv = new ContentValues();
cv.put("datacolumn", 1);  
int count = db.update("mytable", cv, "idcolumn=2", null);

结果是count=1,即使没有更改任何行。

如果我重复这句话,结果是一样的:count=1

我需要知道一个任意的update语句何时真正进行更改,以便为我的同步框架将一行标记为已更改。

如何做到这一点?

我试过有交易和没有交易。结果是一样的,与安卓4.4.2。

相关问题:

  • 使用原始查询从Android中的SQLite获取更新的行数

idcolumn=2匹配一行并进行更新,而不管它是否真的需要更新。因此,您得到1作为更新计数。

如果您的数据没有更改,请不要将其写入数据库。跟踪Java代码中的更改,例如,在保存要写入的数据的POJO中添加一个"isDirty"布尔标志,在setter中检测到更改时将对象设置为dirty,如果对象是dirty,则仅更新到磁盘(数据库)。

最新更新