简体   繁体   English

android sqlite使用db.delete删除超过x天的行

[英]android sqlite delete rows older than x days using db.delete

I know it is possible to delete rows older than X days using我知道可以使用删除超过 X 天的行

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

However db.execSQL(sql) does not return a value and I need to confirm that deletion was successful.但是db.execSQL(sql)不返回值,我需要确认删除成功。

db.delete() returns an int but how to set the WhereClause and whereArgs to delete all rows older than 7 days for example? db.delete()返回一个 int 但如何设置 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);

You don't need the whereArgs variable if your condition is fixed:如果您的条件是固定的,则不需要whereArgs变量:

Date <= datetime('now','-7 day')

So you can do it like this:所以你可以这样做:

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

If you want to be able to pass the number of days that you want to subtract as a parameter, then you will need whereArgs :如果您希望能够将要减去的天数作为参数传递,那么您将需要whereArgs

String[] whereArgs = new String[] {"7"}
String whereClause = "Date <= datetime('now', '-' || ? || ' day')"; 
int deletedRows = db.delete("TABLE", whereClause, whereArgs);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM