android sqlite 使用 db.delete 删除早于 x 天的行

android sqlite delete rows older than x days using db.delete

我知道可以使用

删除超过 X 天的行
String sql = "DELETE FROM TABLE WHERE Date <= datetime('now','-7 day')";
db.execSQL(sql);

但是 db.execSQL(sql) 没有 return 值,我需要确认删除是否成功。

db.delete() return 是一个整数,但是如何设置 WhereClause 和 whereArgs 以删除所有超过 7 天的行?

String whereClause = ...
new String[] whereArgs=....
int deletedRows = db.delete("TABLE", whereClause , whereArgs); 

在您的最终代码片段中,whereClause"Date <= datetime('now','-7 day')"whereArgsnull:

int deletedRows = db.delete("TABLE", "Date <= datetime('now','-7 day')" , null);

如果您的条件是固定的,则不需要 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);