如何从SQLite中删除特定记录?

San*_*til 1 sql sqlite android

我需要从sqlite中删除特定记录.但是下面的代码无法删除它.
请给我一些提示.

public void delete(String Id)
{
    try {

        db.delete(MySQLiteHelper.TABLE_NAME, "Id=?",
              new String[] { Id.toString() });
    }
    catch(Exception e) { ... }

}
Run Code Online (Sandbox Code Playgroud)

Yur*_*ury 5

(更新)你应该使用:

db.delete(MySQLiteHelper.TABLE_NAME, "Id=?", new String[] { Id });
Run Code Online (Sandbox Code Playgroud)

实际上它建议不使用'Id',但是BaseColumns._ID,它等于"_id".

编辑:为未来的用户.

以下方法有什么区别:

1. db.delete(MySQLiteHelper.TABLE_NAME, "_id=" + Id, null);
2. db.delete(MySQLiteHelper.TABLE_NAME, "_id=?", new String[] {Id});
3. db.delete(MySQLiteHelper.TABLE_NAME, TABLE.ID_COLUMN_NAME + "=?", new String[] {Id});
Run Code Online (Sandbox Code Playgroud)

我可以说他们都运作良好.第一种方法和第二种方法的区别在于,通常第二种方法比第一种方法更快且更安全.为什么更快?因为Android可以对参数化查询进行缓存,所以此参数化查询在第一次之后会更快.Android无法对第一个查询进行缓存.为什么更安全?它没有SQL注入.

第二种方法和第三种方法的区别在于id列名称在所有查询中都不是硬编码的.您只需定义此字段一次,然后如果更改了列的名称,则只需在一个位置更改它.