我需要从 sqlite 中删除特定记录。但是下面的代码无法删除它。
请给我一些提示。
public void delete(String Id)
{
try {
db.delete(MySQLiteHelper.TABLE_NAME, "Id=?",
new String[] { Id.toString() });
}
catch(Exception e) { ... }
}
答案 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.
}