0

我需要帮助...

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

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

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

我希望我自己解释一下,提前谢谢

4

3 回答 3

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

于 2012-04-17T21:01:40.390 回答
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 ,这是删除所有记录的原因。

于 2012-04-17T20:18:57.350 回答
1

为了删除特定的行,你需要在delete语句中放置一个where子句delete

于 2012-04-17T20:13:32.837 回答