17

I have done this and it is not working. I am getting force close.

public boolean favoriteDelete(int id) {
    return database.delete("FavoriteData", "Google" + "=" + id, null) > 0;
}
CC BY-SA 3.0
0

5 Answers 5

43

You can simply use sql query to delete.

public void delete(String id) {
        db.execSQL("delete from "+TBL_NAME+" where Google='"+id+"'");
    }

In your query you are passing null in place of whereArgs

db.delete(table, whereClause, whereArgs)

It should be like this

db.delete(TBL_NAME, "Google=?", new String[]{Integer.toString(id)});
CC BY-SA 3.0
0
6

Try this

public boolean favoriteDelete(int id) {
    return db.delete(DATABASE_TABLE, KEY_ROWID +  "=" + id, null) > 0;
}
CC BY-SA 3.0
1
4
database.delete("tablename", "column_name=?", new String[] {Integer.toString(id)});
  • the where condition values should be given as a string array
CC BY-SA 3.0
1

It's better to use placeholders than string manipulation. Ok for int's but as soon as you put a string in there things will go wrong.

String where = COLUMN_NAME_ADDRESS + " = ?";
String[] whereArgs = { String.valueOf(address) };

SQLiteDatabase db = mDbHelper.getWritableDatabase();
db.delete(TABLE_NAME_DEVICES, where, whereArgs);
CC BY-SA 4.0
1

add single quotes in your where clause...

return database.delete("FavoriteData", "Goggle" + "='" + id+"'", null) > 0;
CC BY-SA 4.0

Not the answer you're looking for? Browse other questions tagged or ask your own question.