Следующие сообщения неверны или могут рассматриваться как неправильные.
Не должно быть необходимости вызывать один и тот же запрос дважды.
Считается, что лучше использовать удобные методы Android SDK, когда они подходят (вместо использования execSQL метод delete более уместен).
Существует вероятность атак SQLinjection, когда параметры используются непосредственно в строках, которые выполняются непосредственно как SQL (примечание, разрешение 2 и использование соответствующих параметров решают эту проблему).
Существует, если столбцы не имеют имен с недопустимыми именами, нет необходимости заключать имена столбцов в одинарные кавычки или альтернативные символы (недопустимые имена могут осложнить жизнь, поэтому, если их использовать, многие будут считать их неправильными).1023 *
Если удаление (первое) не работает или если кажется, что удаление не возвращает соответствующий результат после использования pragma count_changes
, который может бытье, чтобы строка не существовала (вставлена ли строка?) или что второй запрос, который ничего не удалит, скрывает результат первого запроса.
pragma count_changes
не рекомендуется в более поздней версииSQLite, поэтому больше не должен использоваться (хотя версия SQlite для Android, как правило, несколько отстает).
В качестве исправления для всей панели идентификатор, который не существует, вы можете использовать следующее: -
public int deleteData(String name,int itemID){
SQLiteDatabase db=getWritableDatabase();
String whereclause = COL1 + "=? AND " + COL2 + "=?";
String[] whereargs = new String[]{String.valueOf(int),name};
return db.delete(TABLE_NAME,whereclause,whereargs);
}
- Обратите внимание, что в результате подписи методов возвращается int , это будет количество удаленных строк.