0

我在从 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 记录为正确的。

再一次,我没有收到任何错误,代码只是不工作。任何帮助将不胜感激。

4

2 回答 2

2

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

于 2013-01-15T20:56:54.210 回答
2

尝试这个

db.delete(LOOKS_TABLE, KEY_ROWID+ " = ?",
                new String[] { String.valueOf(rowId) });
于 2013-01-14T22:24:50.210 回答