在写一个应用时,有这么一个操作:客户端传过来点击的位置,进行运算后得到相应数据在数据库里的id,然后显示对应的信息。
但是在进行delete后数据显示就混乱了,发现根本原因是原本连续的数据id(例如:1、2、3、4),在sqlite的delete语句执行完后(比如说删除id为2的数据),变得不连续(1、3、4)。
删除后点击第三个数据,结果他显示成第二个,而第二个早就删除了,因此显示的信息完全混乱。
解决代码如下:
在执行删除时更新表,把删除位置后面的都往前移动一位
db.execSQL("delete from tb_diary2 where _id in ("+ sb + ")",
(Object[]) ids);
//更新id,使id大于要删除的id的往前移动一位。
db.execSQL("update tb_diary2 set _id=_id-1 where _id > ?",(Object[] )ids);