安卓如何检查数据表上次更新时间?

7
嗨,我开始开发一个Android应用程序,它将使用一个SQLite数据库来保存多个表。我想知道的是特定的表最后一次更新是什么时候,因为有些数据可能不需要每周更新一次,而其他表则需要每隔几个小时更新一次。尝试节省带宽并创建更快、更响应的应用程序。不确定是否有这样的命令(似乎找不到任何信息),或者是否应该在每个表中添加一个包含当前时间和日期的字段,并使用System.currentTimeMillis()来计算它已经存在多长时间。
我知道这个问题之前被问过,但从未得到答案,任何帮助都将非常棒:)
链接:Check when an SQLite database/table was last updated (PHP)
3个回答

10
有点晚了,但是你也可以在表上放置一堆触发器并维护一个修改表,如下所示。最近的修改记录在“modifications”表中以类型、日期和时间记录。像这样创建触发器可以在SQLiteOpenHelper中为每个创建的表轻松实现。
CREATE TABLE table1 (
    _id INTEGER PRIMARY KEY AUTOINCREMENT,
    text1 TEXT,
    text2 TEXT
);

CREATE TABLE table2 (
    _id INTEGER PRIMARY KEY AUTOINCREMENT,
    text1 TEXT,
    int1 INTEGER
);

CREATE TABLE modifications (
    table_name TEXT NOT NULL PRIMARY KEY ON CONFLICT REPLACE,
    action TEXT NOT NULL,
    changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TRIGGER IF NOT EXISTS table1_ondelete AFTER DELETE ON table1
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table1','DELETE');
END;

CREATE TRIGGER IF NOT EXISTS table2_ondelete AFTER DELETE ON table2
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table2','DELETE');
END;

CREATE TRIGGER IF NOT EXISTS table1_onupdate AFTER UPDATE ON table1
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table1','UPDATE');
END;

CREATE TRIGGER IF NOT EXISTS table2_onupdate AFTER UPDATE ON table2
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table2','UPDATE');
END;

CREATE TRIGGER IF NOT EXISTS table1_oninsert AFTER INSERT ON table1
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table1','INSERT');
END;

CREATE TRIGGER IF NOT EXISTS table2_oninsert AFTER INSERT ON table2
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table2','INSERT');
END;

3
据我所知,目前没有 SQL 函数可以实现此功能。您可以为每个记录添加一个时间戳字段,然后查询表中最新的时间戳。

基本上和我想的一样 :) - James
你可以通过检查文件时间戳来检查整个数据库,但这对于单个表是没有帮助的。 :p - Barak
1
是的,当没有必要时,刷新数据似乎没有意义。我知道现在的连接速度很快,但从本地数据库文件中读取肯定更快,哈哈!我对整个Android业务还很陌生,有点眩晕! - James

-2

我相信以下步骤可以实现该操作

第一步:您可以使用sqlite触发器机制

第二步:从第一步调用一个sqlite命令,将更新的记录写入文本文件(请参阅将结果写入文件:http://www.sqlite.org/sqlite.html

第三步:像C#PHP中那样执行文件系统监视器操作

第四步:通过sms网关数据从php发送到android

另外,我正在为我的应用程序工作,这是另一个疯狂的弗兰肯斯坦算法;-)

欢迎提出任何可行且更简单的方法....


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接