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

csbfibhn  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(370)

我知道可以使用

String sql = "DELETE FROM TABLE WHERE Date <= datetime('now','-7 day')";
db.execSQL(sql);

然而 db.execSQL(sql) 不返回值,我需要确认删除是否成功。 db.delete() 返回int,但是如何设置whereclause和wherergs来删除所有早于7天的行?

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

nuypyhwy1#

你不需要 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);
gr8qqesn

gr8qqesn2#

在最后一段代码中, whereClause"Date <= datetime('now','-7 day')" 以及 whereArgsnull :

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

相关问题