如何在Android中更新SQLite中的时间戳?

时间:2019-03-28 23:11:19

标签: android sqlite kotlin timestamp

我的Andoid应用程序中有一个SQLite数据库。我有三行,ID,DATA和DATE,其中SQLite通过使用TIMESTAMP如下CREATE TABLE $TABLE ($ID INTEGER PRIMARY KEY AUTOINCREMENT, $DATE TEXT NOT NULL, $DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP);来填充DATE。

对我来说很好。但是,当我更新DATA行时,时间戳记不会随之更新。我更新了DATA广告,如下所示:

fun updateData(id: String, data: String): Boolean {
    db.update(TABLE, ContentValues().apply {
        put(DATA, data)
    }, "$ID = ?", arrayOf(id))
    return true
}

更新后,时间戳保持不变。惠普可以在每次数据更新后更新时间戳吗?

非常感谢。

2 个答案:

答案 0 :(得分:2)

创建此触发器:

CREATE TRIGGER tab_after_update AFTER UPDATE ON tab
WHEN old.data <> new.data
BEGIN
  UPDATE tab
  SET date = CURRENT_TIMESTAMP
  WHERE id = old.id; 
END;

用表名替换tab
每当列data更新时,就会执行此操作。
您必须在表的SQLiteOpenHelper语句之后立即在onCreate()的类CREATE方法中执行此语句。
在类中进行更改后,请从要测试它的设备上卸载该应用程序,以便删除数据库并重新运行。

答案 1 :(得分:0)

我通过更改来修复了更新

override fun onCreate(db: SQLiteDatabase) {
    db.execSQL("CREATE TABLE $TABLE ($ID INTEGER PRIMARY KEY AUTOINCREMENT, $DATA TEXT, $DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP);")
}

override fun onCreate(db: SQLiteDatabase) {
    db.execSQL("CREATE TABLE $TABLE ($ID INTEGER PRIMARY KEY AUTOINCREMENT, $DATA TEXT, $DATE TEXT;")
}

然后我定义了一个变量来获取当前时间

private var date = SimpleDateFormat("dd.MM.yyyy hh:mm").format(Date())

并将其添加到update方法中:

fun updateData(id: String, data: String): Boolean {
    db.update(TABLE, ContentValues().apply {
    put(DATA, data)
    put(DATE, date)
    }, "$ID = ?", arrayOf(id))
    return true
}

仅此而已。现在,它将更新每个更改/修改的日期。