我需要帮助......
我使用连接到我的数据库的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);
但这样做...我删除了我的表格中的所有内容......
如何通过上下文菜单仅删除选定的行?
我希望我先解释一下自己,
答案 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,这是删除所有记录的原因。