2012-04-17 69 views
0

我需要幫助的事情...Android db.delete(); on ListActivity

我創建了一個cursord適配器連接到我的數據庫,並顯示我保存在我的表中的所有內容的列表視圖。 後來我創建了以longckick出現在所需的行的上下文菜單

上下文位置

  id = getListAdapter().getItemId(info.position); 

,這是我的方法刪除databaseHelper

void deleteReg(SQLiteDatabase db) 
    { 

     db.delete(TabellaRegistry.TABLE_NAME,null, null); 
    } 

我用在我的活動刪除選定的行:

final SQLiteDatabase db = databaseHelper.getWritableDatabase(); 
           databaseHelper.deleteReg(db,null, null, null, null, null, null); 

但是這樣做...我刪除了我所有的表格...

如何通過上下文菜單刪除選定的行?

我希望我解釋自己,在此先感謝

+0

閱讀文檔的db.delete!將空值作爲第二個和第三個參數傳遞將從表 – Selvin 2012-04-17 20:13:09

回答

3

通過傳遞NULL作爲你的第二個參數在這條線:

db.delete(TabellaRegistry.TABLE_NAME,null, null); 

你永遠是刪除整個表。由於Android文檔中所提及的,參數如下:

公衆詮釋刪除(字符串表,字符串whereClause,字符串[] whereArgs)

表 - 該表從

刪除

whereClause - 刪除時應用的可選WHERE子句。 傳遞null將刪除所有行。

所以我們說你要刪除的行,其中BOOK_ID是6,你會碰到這樣的:

public boolean deleteTitle(String id) 
{ 
    return db.delete(DATABASE_TABLE, BOOK_ID + "=" + id, null) > 0; 
} 

SQLite的類概述:再次http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

+0

中刪除整個數據我知道在whereClause將刪除所有行時傳遞null,我總是在示例中寫入,因爲我設法做到了這一點。您的示例對我非常有用,謝謝! – Tony 2012-04-17 23:07:32

1

爲了刪除特定行,你需要把在where子句中的delete語句delete

1

如果您檢查API文檔這種方法你可以自己得到答案。

public int delete (String table, String whereClause, String[] whereArgs) 

Parameters 

table the table to delete from 
whereClause the optional WHERE clause to apply when deleting. Passing null will delete all rows. 

您在where子句中傳遞null是刪除所有記錄的原因。