sqlite每天插入1行是相同的日期

时间:2014-03-21 22:58:50

标签: android database sqlite date

我想通过android在sqlite中插入一行(_idrankdate)。 但我希望每天只有一行。 因此,如果我今天选择另一个等级,它将覆盖该行,以便每天只保留最后一行

示例我插入

(rank,date) -> (3,20140322)
(rank,date) -> (5,20140322)
(rank,date) - (2,20140322)
(rank,date) - (3,20140323)
(rank,date) - (6,20140323)

我希望sqlite只是

(rank,date) - (2,20140322)
(rank,date) - (6,20140323)

如何定义日期列?以及如何每天只获得最后一个值?

1 个答案:

答案 0 :(得分:1)

UNIQUE列中添加date约束,例如:

CREATE TABLE tablename(...
   date TEXT UNIQUE, ...)

然后使用INSERT OR REPLACE进行插入,例如

INSERT OR REPLACE INTO tablename(...,date) VALUES(..., 'todaysdate')

或使用ContentValues使用Android的便捷方法:

db.insertWithOnConflict(table, null, contentValues, SQLiteDatabase.CONFLICT_REPLACE);

当违反UNIQUE约束(或任何其他约束)时,先删除旧的违规行,然后插入新行。