Android db.delete();在ListActivity上

时间:2012-04-17 20:07:52

标签: java android sql

我需要帮助......

我使用连接到我的数据库的cursord适配器创建了一个listview,并向我显示了我在表中保存的所有内容的列表。 我后来创建了一个上下文菜单,在所需的行上显示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);

但这样做...我删除了我的表格中的所有内容......

如何通过上下文菜单仅删除选定的行?

我希望我先解释一下自己,

3 个答案:

答案 0 :(得分:3)

通过在此行传递NULL作为第二个参数:

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

您将始终删除整个表格。如Android文档中所述,参数如下:

  

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

     

table - 要从

中删除的表      

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

答案 1 :(得分:1)

要删除特定行,您需要在删除语句中放置where子句delete

答案 2 :(得分: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,这是删除所有记录的原因。