2012-04-17 31 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是删除所有记录的原因。