我在从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记录为正确。
再一次,我没有收到任何错误,代码无效。非常感谢任何帮助。
答案 0 :(得分:2)
试试这个
db.delete(LOOKS_TABLE, KEY_ROWID+ " = ?",
new String[] { String.valueOf(rowId) });
答案 1 :(得分:2)
我找到了问题的答案。我没有完全理解sqlite数据库的自动增量。因此,我删除了已经空的行。数据库递增的方式是创建一个高于所有先前条目的条目,而不仅仅是当前最高条目。因此,我的屏幕项目的索引与我的数据库表中的索引不对应。