¿Cómo sincronizar la base de datos SQLite en el teléfono Android con la base de datos MySQL en el servidor?
Estoy desarrollando una aplicación para Android. Quiero actualizar la base de datos SQLite local con la base de datos MySQL en el servidor. No soy capaz de averiguar que ¿cuál es la manera más apropiada y estandarizada de hacerlo?
- Android - Cómo descargar los datos en segundo plano en determinados momentos
- ¿Cómo implementar la sincronización de datos entre dispositivos en línea y sin conexión con el motor de aplicaciones de Google?
- Sincronizar la hora del sistema en 2 teléfonos
- ¿Cómo saber cuándo se termina la sincronización?
- Sincronizar varias ventanas con varias vistas en Android
- Cómo mostrar el mensaje de error de sincronización
- Sincronizar datos SQLite desde el teléfono Android a la base de datos MySQL de MySQL de Windows
- Android: cómo recibir notificaciones cuando finaliza la sincronización, al solicitar una sincronización con ContentResolver.requestSync ()
- Cómo sincronizar datos entre diferentes dispositivos
- Sincronización de archivos y bases de datos de Android con Dropbox
- Sincronizar dispositivos Android a través de la hora GPS?
- Una solución en la nube para sincronizar la base de datos de aplicaciones en Android
- ¿Por qué Android activa una sincronización de cuenta de Google cada vez que agrego o elimino una cuenta de un tipo personalizado?
Crear un servicio web (REST es probablemente el mejor) y serializar sus datos SQLite / MySQL y PUT / POST / GET a / desde su servicio web. Esto le dará una buena capa de abstracción en caso de que decida cambiar de MySQL a otra parte del servidor.
Es posible que desee echar un vistazo a fyrecloud.com/amsler Este es el código fuente de una aplicación de demostración de Android que implementa la replicación de MySQL entre un servidor MySQL y el SQLite db en un dispositivo Android.
Amsler descansa sobre dos pilares:
-
Se comunica con el servidor MySQL utilizando el protocolo MySQL Client / Server para conectarse al servidor para la autenticación y para recibir eventos de replicación a medida que ocurren.
-
Utiliza el software Antlr lex y analiza para leer y analizar los eventos de replicación entrantes y luego traducir los comandos de MySQL en comandos SQLite equivalentes.
Esto es ideal para la replicación unidireccional. Puede simular la replicación bidireccional modificando el servidor MySQL indirectamente a través de métodos de tipo RESTful y luego viendo mientras MySQL envía un nuevo evento de replicación de nuevo.
Acceso a un servidor a través de REST es bastante fácil. Sin embargo, modificar una instalación existente de MySQL para soportar la serialización presenta demasiados dolores de cabeza para enumerar aquí. Amsler se aprovecha de los servicios de replicación preexistentes. REST también depende de alguna estrategia de sondeo para mantener el dispositivo local razonablemente actualizado. Una vez más, muchos problemas con este enfoque. Amsler mantiene una conexión TCP / IP con el servidor que permite la notificación de actualizaciones de servidor-push.
La parte más difícil de Amsler es averiguar el lexing / parsing. La sintaxis entre MySQL, SQLite y las diversas versiones de la misma tiene muchas diferencias sutiles. Tantas diferencias que no es práctico proporcionar un traductor de encogimiento-envoltura y en lugar de otro usted debe recurrir a la modificación de la gramática usted mismo.
Sin embargo, bueno, malo, o feo, aquí está. Echa un vistazo y tal vez el guante encaja.
Esto probablemente va a ser útil: bases de datos de sincronización Mysql SQLite
La respuesta real es que no hay estándar o construido en forma mágica para copiar sólo una base de datos MySQL que vive en un servidor en algún lugar de un dispositivo. Tendrás que implementar un servicio web o de alguna manera convertir el db de MySQL en el servidor a la implementación androide sqlite y descargar ese archivo en el directorio de datos de tu aplicación (no es una ruta que recomendaría tomar).
Tarde a la fiesta, pero http://www.symmetricds.org/ es una buena solución.
Java, se ejecuta en Android también.
LGPL.
Puede manejar 10,000's de clientes.
No hay manera estándar. Dependiendo de sus necesidades, puede utilizar servicios web en protocolos REST o SOAP o más intercambio binario de datos.
- ¿Cuándo cerrar el cursor en Android?
- Android Studio 2.0 – pausa / pantalla blanca en la primera ejecución de la aplicación