PDA

Ver la Versión Completa : ¿Como conectar my app Android a una base MySQL?


jpgonzalez
14-04-2014, 13:58:21
Buenas para todos
He descargado la version trial del Delphi XE5 para probar, dado que si todo estuviera tal cual lo esperado, podría presentar en mi trabajo el presupuesto para que lo compren, especificamente para desarrollar algunas aplicaciones simples en Android.
Al pedir presupuesto me recomendaron que compre tambien FireDAC, como componente de conexion... y a este tema me quiero referir.

Dado que no he podido usar Zeos en Android, y que FireDac si esta disponible me puse a ver que se podia hacer con este componente.
Cabe aclarar que mi mayor necesidad es conectarme a una base de datos que tengo en un servidor de Dattatec, con IP publica.
Mi mayor dilema, es que para Android, la conexion a MySQL no esta disponible.
Es decir, si el Target Platform que selecciono para compilar es Win32 o Win 64, se me habilita el componente FDPhysMysqlDriverLink, con el cual puedo configurar la conexion a MySQL
Pero si el Target Platform que selecciono es Android o IOs solo me deja realizar conexiones a bases de datos embebidas, según lo que pude ver.

Metiendome en las librerias (en la carpeta lib), podremos ver las librerías divididas por plataformas, y en la carpeta Android no esta el FDPhysMysqlDriverLink.dcu, como tampoco esta los de MSSQL entre otros.

Solo estan los componentes de IB, SQLLite y dos o tres mas.

En los video tutoriales de Embarcadero, los ejemplos de conexión que dan son justamente con estos dos tipos de bases Capacitación gratuita de Embarcadero en español. (http://www.embarcadero.com/es/coderage-latinamerica1?elq=00000000000000000000000000000000&elqCampaignId=1163)

Si alguien sabe como hacer para conectarme a una base de datos remota, les agradecería la información.
He encontrado algunas formas que lo explican usando Eclipse, y creando un archivo php para lograr las consultas y la conexión, pero la idea es hacerlo desde Delphi, ya que es el lenguaje que mejor domino.

Abrazo!

chaosego
14-04-2014, 19:17:16
Si no consigues realizar la conexión directamente con ningun componente, prueba como alternativa la conexión a un webservice tal y como propone neftali en su série de artículos para conexión de aplicaciones a webservices, concretamente en el segundo tutorial, propone como hacer un servidor de datos rest de forma muy sencilla tirando de una base ded atos mysql, además, explica como realizar las conexiones al mismo desde una aplicación móvil. Es una buenísima série de artículos que merece la pena leer.

jpgonzalez
15-04-2014, 14:07:34
Si no consigues realizar la conexión directamente con ningun componente, prueba como alternativa la conexión a un webservice tal y como propone neftali en su série de artículos para conexión de aplicaciones a webservices, concretamente en el segundo tutorial, propone como hacer un servidor de datos rest de forma muy sencilla tirando de una base ded atos mysql, además, explica como realizar las conexiones al mismo desde una aplicación móvil. Es una buenísima série de artículos que merece la pena leer.

Buenas chaosego, gracias por responder... ahora voy a buscar esos articulos a los que te referis, a ver que puedo hacer.
Desde Embarcadero nunca me contestaron nada sobre este tema.
Nuevamente muchas gracias!!

jpgonzalez
15-04-2014, 14:30:55
Buenas para todos, creo que vale la pena explicar un poco lo que quiero hacer, ya que quiza haya otra manera de hacerlo.
Tanto en mi trabajo, como en los desarrollos que realizo de manera freelance, tengo bases de datos en IP Publicas las cuales se actualizan dia a dia.
La idea es hacer una app Android que pueda acceder a esos datos.

Por ejemplo, de manera privada, junto con mi socio tenemos una web turistica, la cual cuenta con alojamiento, gastronomia, actividades, atracciones, etc.
Nuestra idea es aprovechar toda esa info que se le brinda al turista, desde una app de Android, para lo cual debo acceder a la base de datos de la web.

En relacion de dependencia trabajo para un municipio, el cual ve con muy buenos ojos el hecho de mantener informado a todos los ciudadanos con distintos eventos, cartelera de cine, prensa, etc.
Aqui también tenemos varias aplicaciones que estan montadas dentro de una LAN municipal, y se puede hacer una app informativa que este en un servidor web.

Para todo esto es que requiero que mi app Android se conecte a una base en tiempo real.
No se si con una base de datos como SQL Lite, que segun entiendo es embebida, se puede mantener actualizada la informacino de la BBDD.

Desde ya muchas gracias a todos.

jpgonzalez
12-05-2014, 17:08:44
Nobleza obliga, y en este mensaje quiero agradecer a chaosego y especialmente a Neftali por su excelente predisposicion para contestar mis mensajes.
Les comento que he podido conectar mi app Android utilizando un webservice, tal como lo muestra Neftali en este articulo (http://neftali.clubdelphi.com/?p=3335) utilizando los componentes REST del ejemplo CLIENTE 2 (Delphi XE5 + Componentes REST)

Si siguen los pasos de este ejemplo, lograran facilmente conectar la app a la base MySQL que tengan en cualquier servidor, mediante un archivo php que deberan tener alojado en el mismo.
Lo unico que se me complico fue el tema de la respuesta con JSON, por lo cual les comento lo que deberan modificar para que el RESTResponseDataSetAdapter les convierta la respuesta al TClientDataSet:

Este es un fragmento del codigo php que se encuentra en el archivo listado.php que muestra Neftali en su articulo:

// Crear un array de registros
$arrusers = array();
if(mysql_num_rows($result)) {
while($user = mysql_fetch_assoc($result)) {
$arrusers[] = array('Usuario'=>$user); (*****)
}
}
// salida en el formato JSON
header('Content-type: application/json');
echo json_encode(array('Usuarios'=>$arrusers)); (*****)


Si a alguien no le funciona de esta manera, solo deberan quitar el array del codigo de la siguiente forma:

// Crear un array de registros
$arrusers = array();
if(mysql_num_rows($result)) {
while($user = mysql_fetch_assoc($result)) {
$arrusers[] = $user; (*****)
}
}
// salida en el formato JSON
header('Content-type: application/json');
echo json_encode($arrusers); (*****)


Modificando estas dos lineas (*****), a mi me funciono la conexion y me listo todo de manera perfecta.
Abrazo para todos y nuevamente muchas gracias!!!

juanFr
20-11-2014, 13:42:37
Buenas tardes a todos, he estado probando el ejemplo de conectar android a mysql con webservice, siguiendo los pasos pero no consigo que se muestren los datos en el formulario.
He de comentar que intento mostrarlos para android y utilizo el delphi xe7 version evaluacion. He estado probando todo el contenido de Neftali pero no hay manera de conseguir que se muestren los datos, consuigo el la respuesta pues la muestro en el tmemo pero no puedo mostrar lo del data set
De ante mano gracias

jpgonzalez
05-06-2015, 14:31:46
Buenas juanFr, revisa que la definicion de los campos sea la correcta, que el dataset este bien conectado a la grilla, etc.
A mi me funciono correctamente, el unico inconveniente que tuve fue con el php, como esta por ahi mas arriba, y lo solucione sacando la parte del array.
Por eso deje el codigo de Neftali y debajo lo que yo hice para solucionar ese error.
Arbazo y suerte!

Bertifox2008
21-07-2016, 19:16:43
saludos jpgonzalez, revise completo tu post (a mi me pasa exactamente lo mismo) y no me queda claro si puedo desde una aplicación Andriod insertar registros a una base de datos MySql remota.