如果首先使用db.delete,则Android db.update不起作用

时间:2012-04-26 01:07:33

标签: java android sqlite

我有一个奇怪的问题来更新我的数据库中的表...原谅我,如果我不能解释好,但我有点困惑... 问题是这样的: 我创建了一个带有值的表,我在listview中读取了这个值。所有东西都适用于..插入和删除值工作没有问题..现在在服务中创建了一个循环为什么我需要在值和值之间进行比较我的数据库的字符串,当这个比较为真时,我需要更改表中的值..

真正的问题在于:我的db.update只有在不使用的情况下才有效...从不,命令db.delete ...如果使用它,db.update就不再有用了......为了让它再次发挥作用,我需要制作一个新的AVD。

怎么可能? 我的db.delete和ID是:

item.getMenuInfo();
    id = getListAdapter().getItemId(info.position);

public void deleteReg(SQLiteDatabase db ,long id) 
        {
           db.delete(TabRegistry.TABLE_NAME, TabRegistry._ID + "=" + id, null);
        }

活动:

 databaseHelper.deleteReg(db, id);

我的db.update是这样的:(位置是getPositions()的值,用于定位带有游标的位置(即使在db.update失败时总是有效))

public void updateReg(SQLiteDatabase db,int positions, String stat)
    {
        ContentValues v = new ContentValues();
        v.put(TabRegistry.STATUS, stat);
        db.update(TabRegistry.TABLE_NAME, v, TabRegistry._ID + " = " + positions, null);
    }

服务:

   databaseHelper.updateReg(db, positions, "SUCCESS");

如果您需要更多代码,请告诉我现在添加的内容..提前谢谢

1 个答案:

答案 0 :(得分:2)

您使用的SQLite API基于CRUD操作(您应该阅读此内容)。

您正在从数据库中删除记录,因此当您尝试更新记录时没有任何内容可以更新。如果要创建新记录,或重新创建已删除的记录,则执行INSERT而不是UPDATE。

编辑:

您似乎也在将位置号传递给更新和删除。我假设您也使用此值将记录放在表中?当您从表和数据库中删除记录时,是否有可能其他记录现在因为尚未更新而无效?这只是在黑暗中拍摄,我想也许会问。