GreenDao 3.0 Save方法保存数据失败问题
2017-05-26 本文已影响84人
BryantXie
问题描述
使用GreenDao有一阵子了,确实很好用,这次遇见一个问题,使用save方法怎么也无法保存数据,代码如下:
实体类:
保存:
当调用该方法后数据库中却没有数据
。。。。。。
在确认数据没有问题后,抱着试一试的心态换用Insert()方法,结果就ok了。。。
原因
可是这是为什么呢?
有个伟人说过,当你不知道怎么办的时候,只有一个办法。Read the fucking source code.
save方法如下:
是不是很爽?不需要自己去判断插入还是更新,自己就妥妥的把事给办了~~
可是为啥不行呢?再看hasKey(T)方法
看出问题来了么?
。
。
。
相信聪明的你一定看出问题来了,问题就是在hasKey上,由于我的实体中RegID不是自动生成的,而是手动去赋值的,也就是说在调用hasKey方法的时候永远是返回true,调用的是update方法,然而数据中却没有该条记录,更新失败。。。
所以在主键不是自动生成时,使用save方法会有潜在的风险。
结语
写的有点啰嗦,再接再厉吧。