#java #android #sqlite #android-sqlite
#java #Android #sqlite #android-sqlite
Вопрос:
Я знаю, что можно удалить строки старше X дней с помощью
String sql = "DELETE FROM TABLE WHERE Date <= datetime('now','-7 day')";
db.execSQL(sql);
Однако db.execSQL(sql)
не возвращает значение, и мне нужно подтвердить, что удаление прошло успешно.
db.delete()
возвращает значение int, но как установить whereClause и whereArgs для удаления всех строк старше 7 дней, например?
String whereClause = ...
new String[] whereArgs=....
int deletedRows = db.delete("TABLE", whereClause , whereArgs);
Ответ №1:
Вам не нужна whereArgs
переменная, если ваше условие исправлено:
Date <= datetime('now','-7 day')
Итак, вы можете сделать это следующим образом:
String whereClause = "Date <= datetime('now', '-7 day')";
int deletedRows = db.delete("TABLE", whereClause , null);
Если вы хотите иметь возможность передавать количество дней, которое вы хотите вычесть в качестве параметра, тогда вам понадобится whereArgs
:
String[] whereArgs = new String[] {"7"}
String whereClause = "Date <= datetime('now', '-' || ? || ' day')";
int deletedRows = db.delete("TABLE", whereClause, whereArgs);
Ответ №2:
В вашем окончательном фрагменте кода whereClause
есть "Date <= datetime('now','-7 day')"
и whereArgs
есть null
:
int deletedRows = db.delete("TABLE", "Date <= datetime('now','-7 day')" , null);