2012-05-10 26 views
5

Hola, estoy empezando a desarrollar una aplicación de Android que utilizará una base de datos SQLite que contendrá varias tablas. Lo que me gustaría saber es cuándo se actualizaron por última vez las tablas específicas, ya que algunos datos no necesitarían actualizarse, por ejemplo, una semana, ya que otras tablas necesitarían actualizarse cada pocas horas. Intentando ahorrar ancho de banda y crear una aplicación más ágil y rápida. No estoy seguro de si hay un comando para esto (parece que no puede encontrar nada) o si debería agregar un campo dentro de cada tabla con la hora y fecha actuales y usar System.currentTimeMillis() para calcular cuánto tiempo ha pasado.Android check cuando la tabla se actualizó por última vez

Sé que esto se le preguntó a continuación, pero nunca fue respondida, cualquier ayuda sería impresionante :)

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

Respuesta

3

que yo sepa, no hay ninguna función de SQL para hacerlo.

Puede agregar un campo a cada registro con una marca de tiempo, luego hacer una consulta para devolver la última marca de tiempo de la tabla.

+0

Bastante de lo que pensaba :) – James

+0

Puede verificar toda la BD comprobando la fecha y hora del archivo, pero eso no ayudará con las tablas individuales. : p – Barak

+1

Sí, simplemente no ha visto el punto de actualizar los datos cuando no hay necesidad. Sé que las velocidades de las conexiones de hoy son buenas, pero la lectura de un archivo DB local tiene que ser más rápido, ¡ja, ja! Soy nuevo en todo este negocio de Android, ¡mi cabeza gira un poco! – James

7

Un poco tarde, pero qué diablos - también puede poner un montón de TRIGGER s en sus tablas y mantener una tabla de modificación, como se muestra a continuación. La modificación más reciente se registra con tipo y fecha + hora en la tabla modifications. La creación de TRIGGER s de esa manera se puede lograr fácilmente en un método simple & llamada para cada tabla creada en su 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

Creo que la operación podría lograrse mediante los siguientes pasos

PASO 1: Usted podría utilizar gatillo sqlite mecanismo

PASO 2: invocar un comando sqlite desde el paso 1 al escribir el registro actualizado a un archivo de texto (Verificar los resultados escribir en un archivo: http://www.sqlite.org/sqlite.html)

PASO 3: Realizar File System Watcher operación que en C# o en PHP

PASO 4: Enviar datos de php para android través pasarela SMS

otro frankenstein loca algo, ya que estoy trabajando para mi aplicación ;-)

Cualquier metodología factible y más simple que esta es bienvenida ...

Cuestiones relacionadas