2013-01-14 40 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); –