【问题标题】:android sqlite delete rows older than x days using db.deleteandroid sqlite 使用 db.delete 删除超过 x 天的行
【发布时间】:2020-11-16 12:42:06
【问题描述】:

我知道可以使用删除超过 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); 

【问题讨论】:

    标签: java android sqlite android-sqlite


    【解决方案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】:

      在您的最终代码 sn-p 中,whereClause"Date &lt;= datetime('now','-7 day')"whereArgsnull

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-02
        • 1970-01-01
        相关资源
        最近更新 更多