2013-01-14 38 views
0

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

这里是我使用从我的数据库

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(); 

这吐司消息在屏幕上显示的项目数填充图库视图代码。例如,如果我创建3个项目,然后删除1,它将在屏幕上显示2,并且吐司表示ITEMS == 2。但是,如果我删除另一个,屏幕上仍然有2个项目,ITEMS == 2。所以看起来游标工作正常,但数据库不是。

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

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

我也登录ROWID为正确的,当MDB被调用。

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

回答

2

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

2

试试这个

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

今天下午我会试试这个。你能解释为什么这个代码可能在我使用的代码不存在的地方工作吗? – Nightmare6m

+0

我刚刚尝试了上面的建议,并没有任何影响。你有什么其他的建议? – Nightmare6m

+0

String table =“beaconTable”; String whereClause =“_id”+“=?”; String [] whereArgs = new String [] {String.valueOf(row)}; db.delete(table,whereClause,whereArgs); –