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

时间:2012-03-07 11:35:57

标签: android sql sqlite

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

public void delete(String Id)
{
    try {

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

}

6 个答案:

答案 0 :(得分:5)

(更新)您应该使用:

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

实际上建议使用的不是'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});

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

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

答案 1 :(得分:4)

尝试这样:

public void delete(String Id)
{
    try {

        db.delete(MySQLiteHelper.TABLE_NAME, "Id="+Id, null);
    }
    catch(Exception e) { ... }
}

答案 2 :(得分:2)

try {
    myDB = myDbHelper.openDataBase();
} catch (SQLException sqle) {
    throw sqle;
}
String strFilter = "ID =" + ID;
myDB.delete("Table1, strFilter, null);
myDB.close();

答案 3 :(得分:1)

我认为您可以执行简单的DELETE SQL查询,如:

"DELETE FROM tablename WHERE id = ?"

并将id值作为参数传递给该查询...

答案 4 :(得分:1)

使用此
     

  ourDatabase ="your database name"
  KEY_ROWID="rowid" of your database
&  int l=rowid number of which data you want to delete
   ourDatabase.delete(DATABASE_TABLE, KEY_ROWID+"="+l, null);

如果你输入null而不是KEY_ROWID +“=”+ l而不是删除所有数据

答案 5 :(得分:0)

您可以尝试以下代码删除数据库中的记录

public void deleteRowFromTable(String tableName, String columnName, String keyValue) {
mSQLiteDatabase = getWritableDatabase();//To delete , database should be writable.
    String mColumName= columnName + "=?";
    String[] whereArgs = new String[]{String.valueOf(keyValue)};
    mSQLiteDatabase.delete(tableName, mColumName, whereArgs);
mSQLiteDatabase.close();//This is very important once database operation is done.

}