【问题标题】:Android check when table was last updatedAndroid 检查表格上次更新的时间
【发布时间】:2012-05-19 05:31:19
【问题描述】:

您好,我开始开发一个 Android 应用程序,该应用程序将使用一个 SQLite 数据库,该数据库将保存多个表。我想知道的是上次更新特定表的时间,因为某些数据在一周内不需要更新,而其他表需要每隔几个小时更新一次。试图节省带宽并创建更快响应更迅速的应用程序。不确定是否有此命令(似乎找不到任何东西),或者我是否应该在每个表中添加一个包含当前时间和日期的字段,并使用 System.currentTimeMillis() 来计算它已经持续了多长时间。

我知道有人在下面问过这个问题,但从未得到回答,任何帮助都会很棒:)

Check when an SQLite database/table was last updated (PHP)

【问题讨论】:

    标签: android sql database sqlite


    【解决方案1】:

    有点晚了,但到底是什么——你也可以在你的表上放一堆TRIGGERs 并维护一个修改表,如下所示。最近的修改在modifications 表中记录了类型和日期+时间。像这样创建TRIGGERs 可以通过一个简单的方法轻松完成并为您在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;
    

    【讨论】:

      【解决方案2】:

      据我所知,没有 SQL 函数可以做到这一点。

      您可以为每条记录添加一个带有时间戳的字段,然后执行查询以从表中返回最新的时间戳。

      【讨论】:

      • 跟我想的差不多 :)
      • 您可以通过检查文件时间戳来检查整个数据库,但这对单个表没有帮助。 :p
      • 是的,只是没看到不需要的时候刷新数据的意义。我知道今天的连接速度很好,但是从本地 DB 文件中读取会更快哈哈!我是整个 Android 业务的新手,我有点头晕!
      【解决方案3】:

      我相信可以通过以下步骤来实现操作

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

      步骤 2:从步骤 1 调用 sqlite 命令以将更新的记录写入文本文件(检查将结果写入文件:http://www.sqlite.org/sqlite.html

      第 3 步:执行文件系统观察器操作,如 C#PHP

      第 4 步:通过 sms 网关

      数据从 php 发送到 android

      又一个疯狂的科学怪人算法,我正在为我的应用程序工作 ;-)

      欢迎任何比这更可行和更简单的方法....

      【讨论】:

        猜你喜欢
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 2012-07-31
        • 1970-01-01
        • 1970-01-01
        • 2014-02-05
        • 2014-07-01
        • 2019-10-26
        相关资源
        最近更新 更多