Foros del Web » Programando para Internet » Android »

[SOLUCIONADO] Bases de datos en Android

Estas en el tema de Bases de datos en Android en el foro de Android en Foros del Web. Hola amigos solo quería preguntar, tengo un proyecto en una empresa, trata de una base de datos en MySQL enlazada con Visual Basic 2005, la ...
  #1 (permalink)  
Antiguo 27/07/2014, 23:14
Avatar de Habbacuk  
Fecha de Ingreso: junio-2013
Ubicación: World Wide Web
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Bases de datos en Android

Hola amigos solo quería preguntar, tengo un proyecto en una empresa, trata de una base de datos en MySQL enlazada con Visual Basic 2005, la BD estará en una red local y desean que esa misma BD este para dispositivos móviles.

Mi pregunta es, como puedo enlazar esos datos de MySQL a una app en Android, tengo en cuenta que se usa SQLite pero no se si se puedan sincronizar los datos, tambien habia leido algo sobre XML

¿Pueden aclararme un poco acerca del tema?

De antemano gracias
  #2 (permalink)  
Antiguo 27/07/2014, 23:28
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Bases de datos en Android

Al crear una aplicación para android no puedes acceder directamente a una base de datos como MySQL. Para eso tienes que crear un intermediario, que este caso es un webservice, que exponga los datos de la base de datos.
  #3 (permalink)  
Antiguo 28/07/2014, 00:10
Avatar de Habbacuk  
Fecha de Ingreso: junio-2013
Ubicación: World Wide Web
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Bases de datos en Android

Me podrias explicar que es un intermediario, no tengo mucha experiencia programando en Android pero claro que estoy dispuesto a aprender
  #4 (permalink)  
Antiguo 28/07/2014, 00:11
Avatar de Habbacuk  
Fecha de Ingreso: junio-2013
Ubicación: World Wide Web
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Bases de datos en Android

Cita:
Iniciado por razpeitia Ver Mensaje
Al crear una aplicación para android no puedes acceder directamente a una base de datos como MySQL. Para eso tienes que crear un intermediario, que este caso es un webservice, que exponga los datos de la base de datos.
Me podrias explicar que es un intermediario, no tengo mucha experiencia programando en Android pero claro que estoy dispuesto a aprender
  #5 (permalink)  
Antiguo 29/07/2014, 14:15
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Respuesta: Bases de datos en Android

Habbacuk, lo que razpeitia te quiere decir, es que android no puede consumir directamente una base de datos remota, por lo cual, para esos fines uno normalmente usa un webservice, que hace de puente o intermediario entre tu dispositivo android y tu base de datos. La idea básica es tener un webservice que consuma los datos de una base de datos central y que a su vez se los facilite a la aplicación android que los este solicitando (en realidad a cualquier aplicación que lo solicite). Algo así:

Aplicación android -> WebService -> Base de datos MySQL

Como programar un webservice se aleja de la pregunta que realizas en esta oportunidad y hay muchisima literatura al respecto, no detallaré al respeto.

Si me parece importante mencionar algunos aspectos para consumir dichos webservices desde android. (Esto es 100% en base a mi experiencia personal, por lo cual algunas personas pueden no estar de acuerdo con ello)
  • Utilizar Ksoap2, biblioteca que recopila una serie de recursos que nos permiten interactuar con webservices SOAP.

Si nuestros objetos están compuestos por atributos de tipos nativos (string, int, etc...)

Sin nuestros objetos contienen por ejemplo atributos del tipo ArrayList<String> o peor aún, ArrayList<ObjetoCustom2>
  • Utilizar tipos nativos para el input y un string para el output, siendo este string el correspondiente a la serialización XML de la colección de objetos que resulten de la consulta.
  • Hacer un parseador de XML (para ello puedes SAXParser propio de java o alguna biblioteca que hacen esta tarea bastante sencilla) que te permiten convertir ese XML en una colección de objetos definidos.

NOTA: Digo serialización XML por que es la que más me acomoda a mi, en realidad puedes usar XML, JSON o alguna otra que te acomode.

NOTA IMPORTANTE: Ahora, publicar un webservice que disponibilice la información de una base de datos empresarial o haga operaciones sobre dichos datos, es algo a lo menos delicado, puesto que muchas veces trabajamos con datos que suelen ser confidenciales, por lo que pensar alguna medida de seguridad para este caso resulta algo prioritario. Por ejemplo, en mi caso, dado que la aplicación android se usa sólo desde una lista conocida de dispositivos, registré dichos dispositivos mediante el IMEI y ante cualquier operación o consulta sobre el webservice este lo primero que hace es consultar si conoce al dispositivo que está solicitando el servicio, para ello, el primer parámetro de cada método del webservice (o en su defecto el método de conexión al mismo) es el IMEI.

Espero guiarte un poco en tu duda.

Salud(os)
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!

Última edición por El_Metallick; 29/07/2014 a las 14:46
  #6 (permalink)  
Antiguo 01/08/2014, 12:07
Avatar de Habbacuk  
Fecha de Ingreso: junio-2013
Ubicación: World Wide Web
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Bases de datos en Android

Cita:
Iniciado por El_Metallick Ver Mensaje
Habbacuk, lo que razpeitia te quiere decir, es que android no puede consumir directamente una base de datos remota, por lo cual, para esos fines uno normalmente usa un webservice, que hace de puente o intermediario entre tu dispositivo android y tu base de datos. La idea básica es tener un webservice que consuma los datos de una base de datos central y que a su vez se los facilite a la aplicación android que los este solicitando (en realidad a cualquier aplicación que lo solicite). Algo así:

Aplicación android -> WebService -> Base de datos MySQL

Como programar un webservice se aleja de la pregunta que realizas en esta oportunidad y hay muchisima literatura al respecto, no detallaré al respeto.

Si me parece importante mencionar algunos aspectos para consumir dichos webservices desde android. (Esto es 100% en base a mi experiencia personal, por lo cual algunas personas pueden no estar de acuerdo con ello)
  • Utilizar Ksoap2, biblioteca que recopila una serie de recursos que nos permiten interactuar con webservices SOAP.

Si nuestros objetos están compuestos por atributos de tipos nativos (string, int, etc...)
  • Utilizar el mapeo de objetos que nos ofrece Ksoap2 para el I/O. ([url]https://code.google.com/p/ksoap2-android/wiki/CodingTipsAndTricks#sending/receiving_array_of_complex_types_or_primitives[/url])

Sin nuestros objetos contienen por ejemplo atributos del tipo ArrayList<String> o peor aún, ArrayList<ObjetoCustom2>
  • Utilizar tipos nativos para el input y un string para el output, siendo este string el correspondiente a la serialización XML de la colección de objetos que resulten de la consulta.
  • Hacer un parseador de XML (para ello puedes SAXParser propio de java o alguna biblioteca que hacen esta tarea bastante sencilla) que te permiten convertir ese XML en una colección de objetos definidos.

NOTA: Digo serialización XML por que es la que más me acomoda a mi, en realidad puedes usar XML, JSON o alguna otra que te acomode.

NOTA IMPORTANTE: Ahora, publicar un webservice que disponibilice la información de una base de datos empresarial o haga operaciones sobre dichos datos, es algo a lo menos delicado, puesto que muchas veces trabajamos con datos que suelen ser confidenciales, por lo que pensar alguna medida de seguridad para este caso resulta algo prioritario. Por ejemplo, en mi caso, dado que la aplicación android se usa sólo desde una lista conocida de dispositivos, registré dichos dispositivos mediante el IMEI y ante cualquier operación o consulta sobre el webservice este lo primero que hace es consultar si conoce al dispositivo que está solicitando el servicio, para ello, el primer parámetro de cada método del webservice (o en su defecto el método de conexión al mismo) es el IMEI.

Espero guiarte un poco en tu duda.

Salud(os)
El_Metallick pero se puede hacer eso en XML con cadenas string y como un tipo vistas en mysql otra cosa, no tendre un servidor sera en una red local, crees que funcione para el android
  #7 (permalink)  
Antiguo 01/08/2014, 14:52
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Respuesta: Bases de datos en Android

Habbacuk, realmente no entendí tu pregunta, lo que si te puedo aclarar, es que desde Android NO podrás entrar directamente a la base de datos, aun que estés en la misma red local. La única forma de realizar un intercambio de información entre tu base de datos local y tu dispositivo Android es mediante una aplicación que haga de puente entre ambos, sea un WebService u algún otro tipo de aplicación que consulte a la base de datos y retorne los datos consultados.

Salud(os)
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #8 (permalink)  
Antiguo 02/08/2014, 14:09
Avatar de Habbacuk  
Fecha de Ingreso: junio-2013
Ubicación: World Wide Web
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Bases de datos en Android

Si entiendo pero lo que preguntaba era esto, si deseo hacerlo en XML

base de datos >> programa en XML >> App en android

Donde estaría ubicado el programa en XML
  #9 (permalink)  
Antiguo 04/08/2014, 00:43
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Bases de datos en Android

Tanto la base de datos como el webservice que te genere el XML han de estar en un servidor externo, no pueden estar en el móvil. El webservice estaría en tu hosting.
__________________
Aviso: No se resuelven dudas por MP!
  #10 (permalink)  
Antiguo 04/08/2014, 08:39
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Respuesta: Bases de datos en Android

habbacuk: me da la idea que tienes un error de concepto. No me suena bien eso de "programa en XML", XML no es un lenguaje de programación, es un lenguaje de marcas o "etiquetas" que te permiten disponibilizar información de forma legible. Por lo tanto, lo que deberías desarrollar es una aplicación del tipo webservice que responda en formato XML a una petición. Ahora esa aplicación la puedes desarrollar en .Net, en Java, en PHP, o en algún otro lenguaje que ya permita (yo me quedé hasta esos tres nada más). Este tipo de aplicaciones son montadas en servidores web (IIS para el caso de .Net o Apache para el caso de Java o PHP), por lo cual, cualquier servidor que esté habilitado para ser servidor web, sería candidato para alojar este servicio.

Salud(os)
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #11 (permalink)  
Antiguo 07/08/2014, 11:09
Avatar de Habbacuk  
Fecha de Ingreso: junio-2013
Ubicación: World Wide Web
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Bases de datos en Android

Cita:
Iniciado por El_Metallick Ver Mensaje
habbacuk: me da la idea que tienes un error de concepto. No me suena bien eso de "programa en XML", XML no es un lenguaje de programación, es un lenguaje de marcas o "etiquetas" que te permiten disponibilizar información de forma legible. Por lo tanto, lo que deberías desarrollar es una aplicación del tipo webservice que responda en formato XML a una petición. Ahora esa aplicación la puedes desarrollar en .Net, en Java, en PHP, o en algún otro lenguaje que ya permita (yo me quedé hasta esos tres nada más). Este tipo de aplicaciones son montadas en servidores web (IIS para el caso de .Net o Apache para el caso de Java o PHP), por lo cual, cualquier servidor que esté habilitado para ser servidor web, sería candidato para alojar este servicio.

Salud(os)
Asi es El_Metallick hehe pensaba que era un lenguaje de programación, entonces XML lo puedo agregar desde el mismo Visual Studio?, o algo que se me ocurrió, como la BD sera solo en una red local podría instalar el WampServer y de una forma hacer que se haga un XML seria mas o menos asi?

Saludos
  #12 (permalink)  
Antiguo 07/08/2014, 21:55
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Respuesta: Bases de datos en Android

Habbacuk, con wampserver no deberías tener problemas en disponibilizar un sitio web, pero recordemos que apache no soporta asp ni asp.net, para eso necesitaras IIS (Internet Information Server). Busca manuales de como programar un webservice en el lenguaje que más te acomode y comienza a hacer algunas pruebas.

Saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #13 (permalink)  
Antiguo 08/08/2014, 21:18
Avatar de Habbacuk  
Fecha de Ingreso: junio-2013
Ubicación: World Wide Web
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Bases de datos en Android

Cita:
Iniciado por El_Metallick Ver Mensaje
Habbacuk, con wampserver no deberías tener problemas en disponibilizar un sitio web, pero recordemos que apache no soporta asp ni asp.net, para eso necesitaras IIS (Internet Information Server). Busca manuales de como programar un webservice en el lenguaje que más te acomode y comienza a hacer algunas pruebas.

Saludos
Muy bien tratare de hacerlo, gracias

Etiquetas: aplicacion, bases-de-datos, datos+db+mysql, moviles, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:22.