您好,我开始开发Android应用程序,该应用程序将使用可容纳多个表的SQLite数据库。我想知道的是,上次更新特定表时,因为某些数据不需要更新,例如一周,其他表需要每隔几小时更新一次。尝试节省带宽并创建更快速响应的应用程序。不确定是否有一个命令(似乎找不到任何东西)或者我是否应该在每个表中添加一个具有当前时间和日期的字段,并使用System.currentTimeMillis()计算它有多长是。
我知道这是在下面被问到的,但从未得到过回答,任何帮助都会很棒:)
答案 0 :(得分:8)
有点晚了,但到底是什么 - 你还可以在你的桌子上放一堆TRIGGER
并维护一张修改表,如下图所示。使用modifications
表中的类型和日期+时间记录最近的修改。创建这样的TRIGGER
可以通过简单的方法轻松完成。要求在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;
答案 1 :(得分:3)
我知道没有SQL函数可以做到。
您可以使用时间戳为每条记录添加一个字段,然后执行查询以从表中返回最新的时间戳。
答案 2 :(得分:-2)
我相信可以通过以下步骤实现操作
第1步:您可以使用 sqlite触发器机制
步骤2:从步骤1调用 sqlite 命令,以将更新的记录写入文本文件(检查将结果写入文件:http://www.sqlite.org/sqlite.html )
第4步:通过短信网关
将数据从php发送到android 另一个疯狂的弗兰肯斯坦算法,正在为我的申请工作;-)欢迎使用任何可行且简单的方法....