我有一个表,它有一个主键列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,则仅更新到磁盘(数据库)。