android sqlite删除行不起作用

时间:2013-01-14 22:21:50

标签: android sqlite

我在从sqlite数据库中删除行时遇到一个奇怪的问题。我第一次尝试删除一行,似乎工作正常。但是,此后的任何时候,我都没有错误,它只是不删除所选行。如果我卸载应用程序并从eclipse重新运行它(我将我的平板电脑连接到我的电脑上进行测试),那么第一次删除会再次运行。

以下是我用来填充数据库中的图库视图的代码

Cursor cursor = _garmentAdapter.fetchAllLooks();

      cursor.moveToLast();
     final ArrayList<Bitmap> al = new ArrayList<Bitmap>();
      _labels=new ArrayList<String>();
      int totalGarments=0;
      for(int i=cursor.getCount()-1; i>=0; i--) {


        totalGarments++;
        Bitmap bd=BitmapFactory.decodeFile(cursor.getString(3));
        String label=cursor.getString(1);
        al.add(bd);
        _labels.add(label);



       cursor.moveToPrevious();
      }

      Toast.makeText(BrowseLooks.this, "ITEMS=="+totalGarments,     Toast.LENGTH_SHORT).show();

此Toast消息显示屏幕上的项目数。例如,如果我创建3个项目,然后删除1,它在屏幕上显示2并且toast说ITEMS == 2。但是,如果我删除另一个,我仍然有2个项目在屏幕上,ITEMS == 2。所以似乎光标工作正常,但数据库不是。

以下是数据库中删除行的代码:

return mDb.delete(LOOKS_TABLE, KEY_ROWID+"="+rowId, null)>0;

当调用mDb时,我也将rowId记录为正确。

再一次,我没有收到任何错误,代码无效。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

试试这个

db.delete(LOOKS_TABLE, KEY_ROWID+ " = ?",
                new String[] { String.valueOf(rowId) });

答案 1 :(得分:2)

我找到了问题的答案。我没有完全理解sqlite数据库的自动增量。因此,我删除了已经空的行。数据库递增的方式是创建一个高于所有先前条目的条目,而不仅仅是当前最高条目。因此,我的屏幕项目的索引与我的数据库表中的索引不对应。