(ОБНОВЛЕНО) Вы должны использовать:
db.delete(MySQLiteHelper.TABLE_NAME, "Id=?", new String[] { Id });
И на самом деле предлагает использовать не 'Id', а BaseColumns._ID
, что равно"_id".
EDIT : для будущих пользователей.
В чем разница между следующими методами:
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 не жестко закодировано во всех запросах.Вы можете просто определить это поле только один раз, а затем, если имя столбца изменяется, вам нужно изменить его только в одном месте.