2012-05-10 28 views
5

Xin chào, tôi đang bắt đầu phát triển một ứng dụng Android sẽ sử dụng DB SQLite sẽ chứa nhiều bảng. Điều tôi muốn biết là khi các bảng cụ thể được cập nhật lần cuối vì một số dữ liệu sẽ không cần được cập nhật để nói một tuần khi các bảng khác sẽ cần được cập nhật vài giờ một lần. Đang cố gắng tiết kiệm băng thông và tạo ứng dụng đáp ứng nhanh hơn. Không chắc chắn nếu có một lệnh cho điều này (dường như không thể tìm thấy bất cứ điều gì) hoặc nếu tôi nên thêm một lĩnh vực trong mỗi bảng với thời gian hiện tại và ngày và sử dụng System.currentTimeMillis() để làm việc ra bao lâu nó đã được.Android kiểm tra khi bảng được cập nhật lần cuối

Tôi biết điều này đã được yêu cầu dưới đây nhưng không bao giờ được trả lời, bất kỳ trợ giúp sẽ là tuyệt vời :)

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

Trả lời

3

mà tôi biết không có chức năng SQL để làm điều đó.

Bạn có thể thêm trường vào mỗi bản ghi với dấu thời gian, sau đó thực hiện truy vấn để trả lại dấu thời gian mới nhất từ ​​bảng.

+0

Khá nhiều điều tôi nghĩ :) – James

+0

Bạn có thể kiểm tra toàn bộ DB bằng cách kiểm tra dấu thời gian tệp, nhưng điều đó sẽ không giúp ích cho từng bảng. : p – Barak

+1

Yea, chỉ không thấy điểm trong dữ liệu làm mới khi không cần. Tôi biết tốc độ kết nối ngày hôm nay là tốt nhưng đọc từ một tập tin DB địa phương là có được nhanh hơn ha ha! Tôi mới làm quen với toàn bộ công việc kinh doanh Android này, đầu tôi quay một chút! – James

7

Một chút trễ, nhưng những gì địa ngục - bạn cũng có thể đặt một bó của TRIGGER s trên bàn của bạn và duy trì một bảng sửa đổi, như được hiển thị dưới đây. Sửa đổi gần đây nhất được ghi lại bằng loại và ngày + giờ trong bảng modifications. Tạo TRIGGER s như vậy có thể dễ dàng thực hiện trong một phương pháp đơn giản & kêu gọi mỗi bảng được tạo trong bạn 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

tôi tin rằng các hoạt động có thể được thực hiện bằng các bước sau

Bước 1: Bạn có thể sử dụng kích hoạt sqlite cơ chế

BƯỚC 2: gọi một sqlite lệnh từ BƯỚC 1 tới viết các bản ghi được cập nhật vào một tập tin văn bản (Kiểm tra kết quả Viết vào một tập tin: http://www.sqlite.org/sqlite.html)

BƯỚC 3: Thực hiện File System Watcher hoạt động như trong C# hay trong PHP

Bước 4: Gửi dữ liệu từ php Android qua cửa ngõ sms

chưa một Frankenstein điên algo, như đang làm việc cho các ứng dụng của tôi ;-)

Bất kỳ phương pháp khả thi và đơn giản nào khác được chào đón ....

Các vấn đề liên quan