Ver Mensaje Individual
  #1  
Antiguo 25-04-2016
EdgarSamudio EdgarSamudio is offline
Registrado
NULL
 
Registrado: sep 2014
Posts: 3
Reputación: 0
EdgarSamudio Va por buen camino
Question Actualizar BD Sqlite Android

Muy buenos días a todos.

Tengo un pequeño proyecto hecho en Firemonkey (Delphi 10Seattle), la cual usa una BD Sqlite que obtiene los datos iniciales de un Servidor DataSnap en un equipo Windows Server 2008 x64 con Firebird-2.5.5.26952_0 también x64, un servidor FTP con una IP pública y sus respectivos puertos en escucha.

Otras herramientas que uso son:
1- KataKuntur v2.5.2, data modeler para SQLite, Jean Mazuelos
2- SQLite Administrator v0.8.3.2, Orbmuk2

La funcionalidad es así, al instalar la aplicación el usuario manualmente tiene que ejecutar una utilidad que consulta e inserta del servidor DataSnap a SQLite todos los registros de las tablas a usar, (Clientes, Productos) y funcione localmente desde entonces, sin consultar o enviar datos al servidor DataSnap (esto es a causa de la muy mala conexión a internet de las operadoras móviles en mi ciudad/país).

Básicamente la app obtiene los datos iniciales, luego los usuarios hacen inserciones, consultas y/o modificaciones en las tablas, todos en la BD del dispositivo; hasta acá todo bien y no hay inconvenientes.

Cada dispositivo tiene datos nuevos cargados en SQLite (fichar nuevo cliente, cargar pedidos de ventas) que al término de la jornada o recorrido, los usuarios envían manualmente al servidor DataSnap los datos pendientes y obtienen los registros iniciales de nuevo para el próximo día siempre usando esa utilidad de la aplicación.

El problema está en cómo actualizar la BD Sqlite del dispositivo cuando haya cambios del diseño de la BD, como por ejemplo uno o varios campos nuevos, o una tabla nueva sin desinstalar la aplicación y/o perder datos.

Los cambios lo hago usando KK y exporto el diagrama la cuál genera la BD.sqlite, este añado al proyecto Firemonkey y al construir adjunta al APK.

El nuevo APK es alojada al servidor FTP para su descarga, los usuarios lo obtienen e instalan en sus dispositivos pero no actualiza la BD antigua.

Buscando en internet encontre estos foros que por cierto están en portugués

1: Fórum Programador Mobile - Android - IOS - Delphi
programadormobile.com.br/viewtopic.php?f=24&t=383&p=1317

2: [ANDROID/IOS]Atualizar DB sqlite pelo aplicativo
programadormobile.com.br/novo/2015/05/26/androidiosatualizar-db-sqlite-pelo-aplicativo/

Ambos foros describen una idéntica lógica/solución la cuál es crear un procedure en delphi para así validar por cada campo algún cambio de estructura, pero no prevé los datos.

Además, el mismo autor admite que podría haber otra solución más eficiente y es por eso que me atreví a escribir al foro y robarles su preciado tiempo a todos ya que soy muy novato en todo esto (Delphi y SQLite).

La idea es hacer una utilidad como DBComparer para SQLite que funcione en Android e iOS dentro de la misma aplicación o cómo una utilidad externa a ella, de ahí a que herramientas usar y cómo hacerlo es mi gran duda.

Agradezco de antemano y que tengan buen resto de jornada.
Responder Con Cita