Re: [desarrolladores-android.com] Sincronizar base de datos sqlite.

6,803 views
Skip to first unread message

ROBERTO ANGUITA MARTIN

unread,
Jul 2, 2012, 4:04:48 AM7/2/12
to desarrollad...@googlegroups.com
Divide el problema y encontraras la solución. Te doy unas pinceladas de lo que yo haria
1 - Hacer una actividad simple donde configurara una conexion a sun servidor remoto  para hacer la insercion (una forma facil puede ser montar un php en el servidor remoto y hacer desde android una llamada nativa al php) , aunque se puede configurar la conexion desde android a una bbdd remota directamente.
2- Probar a insertar algun dato con esa conexion remota creada.
3- Realizar una select de la bbdd local y una insert de los datos seleccionados a la remota.
4- Realizar como servicio en background para que cada x min haga select a la bbdd remota y a  local y si el ultimo id de registro coincide no hace nada, sino inserta los x registros que faltan

--
 
Un saludo
Roberto Anguita 

(puedes seguirme en @ranguita78)
-------------------------------------------------------------------
coto - App del Restaurante el Coto del Casar
lightwidget - Widget que permiter convertir tu terminal en una linter 
sensores - Muestra los sensores disponibles en tu terminal así como los valores que toma
El Rincon de Luckesky - Blog der noticias Android

Antes de imprimir este e-mail piense bien si es necesario hacerlo. El medioambiente es cosa de todos.



El 2 de julio de 2012 05:54, idmer de la cruz clemente <idmer...@gmail.com> escribió:
Hola Amigos,
La verda no tengo ninguna idea de como sincronizar la base de datos sqllite a un servidor remoto,
ya que estoy haciendo una aplicacion donde trabaja en modo desconectado.

Espero que me puedan ayudar.
Saludos.

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/desarrolladores-android/-/34_jP7fvM-UJ.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es-ES.


Idmer de la cruz clemente

unread,
Jul 2, 2012, 8:19:55 AM7/2/12
to desarrollad...@googlegroups.com
Hola ROBERTO, Gracias por darme un alcance, en un instante pense halgo similar ha lo que me planteas, enviar la informacion directamente a un servidor remoto, lo que pasa en mi caso hay 10 usuarios que van al campo a tomar informacion que en realidad son como 1000 registros en cada usuario, lo que se quiere es sincronizar esa informacion en un solo servidor remoto al termino de la jornada, si fuera 1 usuario me serviria lo que me dices ver el ultimo id de registro coincidente.
Te hago un ejemplo.
En el primer usuario
tabla Produccion
id: 1
TipoCultivo=1
CultivoID=2
Cantidad :30

En el segundo usuario
id:1
TipCultivo = 1
CultivoID=5
Cantidad=100

y asi sucesivamente en los demas usuarios,

ROBERTO ANGUITA MARTIN

unread,
Jul 2, 2012, 8:30:48 AM7/2/12
to desarrollad...@googlegroups.com
Una forma de resolver eso seria usando una SECUENCIA en la base de datos remota, de esa forma cada vez que se hace una SELECT se genera un nuevo numero por lo que si cada usuario a la hora de generar informacion solicita previamente un numero de secuencia ya tienes un identificador unico para hacer la "transacción" de tal forma que siempre actualizas todos aquellos datos del usuario extraidos durante la "sesion" que son identificados por la secuencia

Jimmy Collazos || acido || cuatroxl.com

unread,
Jul 2, 2012, 8:49:04 AM7/2/12
to desarrollad...@googlegroups.com
Te cuento como lo hago yo en mi aplicación:

Móvil:
La tabla necesita dos campos:
  • remoteId
  • state (aquí tienes que incluir un estado "subido al servidor")
Pseudocódigo:

addRemote(){
getRaw().upServer().onSucces().changeState().addRemoteId()
}
syncronize(){
 find('state = NO_SYNCRONIZE').each(addRemote)
}

if( insert(data) ){
 syncronize()
}


El remote Id te vale por si quieres hacer alguna operación contra el servidor; date cuenta que esta operación la haces cada vez que insertas un registro; en caso de no tener red no pasa nada.

Puedes darla la opción de "sincronizar" en un botón si quierse, solo tienes que llamar a la función syncronize()

--
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::: J i m m y  C o l l a z o s :::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Idmer de la cruz clemente

unread,
Jul 2, 2012, 9:09:58 AM7/2/12
to desarrollad...@googlegroups.com
Hola Jimmy Collazos, Muchas gracias por su alcance, no se si me puedes compartir tus clases de como lo trabajas la sincronizacion ya que yo soy todabia novato o algun manual que me recomiendas,
Lo agradecere mucho.
Saludos.


--

Jimmy Collazos || acido || cuatroxl.com

unread,
Jul 2, 2012, 9:16:15 AM7/2/12
to desarrollad...@googlegroups.com
Si no sabes ... la cosa se complica mucho :P

tienes que tener una API; luego crear una librería para manejar esa API y ahí añadir la funcionalidad de sincronización.

Suerte!

Idmer de la cruz clemente

unread,
Jul 2, 2012, 9:17:55 AM7/2/12
to desarrollad...@googlegroups.com
Bueno solo quisiera que me ayudes con la sincronizacion no mas.

--

Meison

unread,
Jul 2, 2012, 9:45:02 AM7/2/12
to desarrollad...@googlegroups.com

Bueno me parece que con lo que te han explicado Roberto y Jimmy se entiende bastante bien sin embargo si te sirve te cuento como lo hice no hace mucho :

1.- Creacion de la BD central equivalente (O las tablas que te interesen sincronizar) en tu servidor (MySQL, Oracle, el que fuese) .
    . En estas tablas manejo un campo de versionamiento  "version" para la sincronizacion, para que c/u de los dispositivos que desee actualizar en SQLite esta tabla, sepa si tiene la ultima version.
    .  En mi BD SQLite tengo los campos "version" y "idCentralDB" que inicialmente estará vacia, entendiendose con ello que aun no esta sincronizada y tomará un valor cuando se realize la sincronizacion y su valor será el mismo ID que tome en la BD central 

2.- Creacion de Web Services para manejar la consulta, insercion, eliminacion de registros en tu BD central.
3.- Consumo de los WS, puedes usar ksoap para esto 
4.- Puedes colocar un boton de "sincronizacion" en tu app o tambien crear un service que haga dicha tarea cada "n" segundos.

Espero te sirva
--

Un Saludo
Meison 


((+511) 258 - 3564
((+511) 997 - 773937

Android Market
--------------------------------------------------------------------------------------



Idmer de la cruz clemente

unread,
Jul 2, 2012, 9:49:44 AM7/2/12
to desarrollad...@googlegroups.com
Hola Meison, Muchas gracias ahora si lo entendi como trabajarlo lo pondre en practica, luego te cuento de como me fue,
Saludos.

Andres Martin Cantos Rivadeneira

unread,
Jul 17, 2012, 2:54:55 AM7/17/12
to desarrollad...@googlegroups.com
Primero necesitas definir el servidor que vas a utilizar, eso depende mucho de la plataforma.. puede ser tomcat,apache, IIS, etc..
luego crear los Web service que no son mas que funciones que las vas a llamar desde el telefono android y estas funciones reciben la información en archivos xml y listo..

El 16 de julio de 2012 17:20, Cristian Leonardo Sulca Martinez <cris...@gmail.com> escribió:
Que tal amigos la verdad este tema es el que me tiene pensando todo estas semans, estoy haciendo una app en la cual necesito sincronizar la informacion de mi base de datos en mi servidor que esta en mysql a la base sqlite del android, meison se explico bien y con leer e investigar comprendo mejor estos conceptos pero aun no teng experiencia en web services ni tampoc en base de datos, asi que no se si tengas algun ejemplo ejercicio o algun link donde nos pueda ayudar con este tema de sincronizar la base de datos remota en nuestro telefono.

muchas gracias de antemano 

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para ver este debate en la Web, visita https://groups.google.com/d/msg/desarrolladores-android/-/iuf50c8NxVkJ.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Jose Gregorio Alvarez Regalado

unread,
Jul 17, 2012, 6:07:03 AM7/17/12
to desarrollad...@googlegroups.com

Revisa el blog de sgoliver. Tiene ejemplos usando XML y json.

Enviado desde mi HTC Sensation

Idmer de la cruz clemente

unread,
Jul 17, 2012, 8:15:55 AM7/17/12
to desarrollad...@googlegroups.com
Hola, yo tambien me encontrabaja con ese problema, pero logre solucionar a travez de un php retornando un json,

Idmer de la cruz clemente

unread,
Jul 17, 2012, 8:16:32 AM7/17/12
to desarrollad...@googlegroups.com


El 17 de julio de 2012 07:15, Idmer de la cruz clemente <idmer...@gmail.com> escribió:
Hola, yo tambien me encontraba con ese problema, pero logre solucionar a travez de un php retornando un json,

Raúl_9867

unread,
Jul 23, 2012, 10:29:08 AM7/23/12
to desarrollad...@googlegroups.com
Hola amigos,

actualmente me encuentro desarrollando un proyecto en el que queremos integrar la información con una base de datos mySQL, a partir, de una base de datos SQLite que se crea en una app Android para una tableta. Inicialmente la idea sería construir una base de datos local unica para el dispositivo movil, pero nuestra duda viene en: ¿cuando digamos de ampliar el proyecto incluyendo la sincronización de la base de datos local (SQLite) de la tableta con el servidor (mySQL) se tendrían que realizar muchos cambios en la app de la tableta android. (con BD SQLite)? Ya he estado leyendo que habría que construir a parte un Servicio Web... pero a parte de eso, en la programación de tableta ¿se tendria que integrar muchos cambios?

¿Me podrian facilitar algún ejemplo de sincronización? He encontrado muchos ejemplos de aplicaciones android con base de datos embebidas en el dispoitivo movil pero con sincronización he encontrado poco y mal explicado.


Gracias de antemano.

Raúl Salazar.

Daniel Martín Jiménez

unread,
Jul 23, 2012, 10:43:58 AM7/23/12
to desarrollad...@googlegroups.com
Si lees los mails anteriores creo que te responden a todo por triplicado.

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com

Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
----------------------------------------------------------------------------------------------------------
Me lo contaron y lo olvidé; lo vi y lo entendí; lo hice y lo aprendí.

Darry Castro

unread,
Jul 24, 2012, 10:12:47 AM7/24/12
to desarrollad...@googlegroups.com, Raúl_9867

Darry Castro

Buenos días,

Espero este link te sirva

http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/

.




Saludos cordiales.
Ing. Darry Marlon Castro Capovich
Account Manager.
MCP Microsoft.
Aripagua, C.A.
Web site. http://www.aripagua.com

Este mensaje está destinado a las personas o entidades a quienes está dirigido y contiene información confidencial o privilegiada. Si ha recibido este mensaje y no está dirigido a usted, no podrá hacer uso del mismo, ni copiarlo o distribuirlo. Le rogamos se sirva notificarnos utilizando Reply Mail y borrar este mensaje, en caso que lo haya recibido por error. Gracias


--

Dante Valencia

unread,
Sep 9, 2014, 10:10:27 AM9/9/14
to desarrollad...@googlegroups.com
Amigo ayuda por favor...
tengo mi aplicacion que guarda mis datos en mi bdd interna ( dentro la sd de mi telefono)... 
lo que necesito hacer es que esta bdd pueda mandarla a un servidor cuando yo quiera (apretando un boton)...
y poder descargar esta bdd del servidor cuando quiera( apretando un boton)...
como haria eso? 
Gracias

Dewins Murillo

unread,
Nov 14, 2014, 8:53:35 PM11/14/14
to desarrollad...@googlegroups.com
Asi se hace, imagínate que los datos que descargan corresponden a una zona de 1 km cuadrado y la ultima fecha que quedó es 2014-11-14 si el usuario se pasa a otra zona  los registros que sean de fecha inferior no se descargarían dado que en la primera zona no se descargaron por no pertenecer a esa zona. En conclusión para garantizar siempre descargar registros sin tener en cuenta la fecha ni los las sentencias sql, lo que se debe hacer es tener una tabla de registros con dispositivo indicando que registro ya descargo un dispositivo. ejemplo si tengo una tabla llamada [estacion (id_estacion)] entonces debe haber otra llamada [estacion_dispositivo(id_dispositivo,id_estacion)] que sera alimentada en cada sincronización con las ultimas estaciones descargadas por un dispositivo confirmando que ya se encuentra en ese dispositivo y así de esta manera en la descarga json solo bajan las estaciones que el usuario no tenga en su dispositivo. ah y si un usuario reinstala la app nuevamente entonces a dicha tabla [estacion_dispositivo] se le debe eliminar los registros de ese dispositivo y listo vuelve y sincroniza como un reloj.

cindycha...@gmail.com

unread,
Jan 30, 2015, 1:48:41 PM1/30/15
to desarrollad...@googlegroups.com

hola amigos tengo un problemas .. tengo una aplicación  y debo conectarla a un web service  que esta hecho con basic4android  lo que debe hacer es hacer una consulta de las tablas q necesito y asi llenaran los listview de cada en la aplicacion y se como hacerlo.. el web service
Reply all
Reply to author
Forward
0 new messages