我有一个Service
,它会清理一些文件,并执行一些SQL查询。此特定SQL查询应删除超过x天的条目。我这样做的方法是:
public boolean deleteOldCases(int days) {
String deleteQuery = "DELETE FROM " + TABLE_CASES + " WHERE " + DATE + " <= date('now','-" + days + " day')";
Log.d("Delete Query: ", deleteQuery);
SQLiteDatabase db = this.getWritableDatabase();
db.rawQuery(deleteQuery, null);
db.close();
return true;
}
当我向数据库添加条目时,我这样做:
public void addCase(Case c) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID, c.getCaseNumber());
values.put(STATUS, "");
// Inserting Row
db.insert(TABLE_CASES, null, values);
db.execSQL("Update " + TABLE_CASES + " Set " + DATE + "=datetime() where " + KEY_ID + "= '" + c.getCaseNumber() + "';" );
db.close(); // Closing database connection
}
从我的服务调用此方法,我可以通过记录验证此方法被调用。所有这些数据都在ListView中显示给用户,这显然有效。但是旧条目根本没有删除..
我怀疑是因为我使用date = datetime()
保存案例并尝试使用<=date('now', '-1 day')
有人能看出做错了吗?
答案 0 :(得分:0)
仅将rawQuery()
用于实际查询(以“SELECT”关键字开头的SQL语句)。请改用execSql()
。