android sqlite удаляет строки старше x дней с помощью db.delete

#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);