Android - AndroidStudio, MySQL?

 
Vista:
Imágen de perfil de Jordi
Val: 24
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Jordi (12 intervenciones) el 03/02/2017 00:25:40
Hola a todos. Estoy haciendo una aplicación android y tengo una DB remota, donde por ahora me estoy conectando con unos archivos .PHP en el servidor web y JSON para la comunicación con la aplicación. Pero es un rollo...

He leído por ahí que se puede hacer con JDBC, y he visto algún ejemplo y parece mas sencillo pero no he conseguido que funcione... Si alguien lo ha hecho alguna vez y me puede indicar como se hace o poner un ejemplo seria ideal.

También he leído que no es muy recomendable usar JDBC por tema de seguridad, si alguien descompila el código podría obtener todos los datos de la DB... Es eso cierto? En ese caso, que es mas recomendable hacer si necesito una DB remota?

Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

AndroidStudio, MySQL?

Publicado por sergio (7 intervenciones) el 07/02/2017 19:16:47
hola amigo, yo he estado hacieno lo mismo desde hace unos dias, y te recomiendo que sigas consumiendo los datos con tus archivos php, es mucho mas seguro y mucho mas rapido.... lo unico que aun no resuelvo es como capturar o hacer un reporte desde el servidor y obtenerlo en el dispositivo en donde tengo mi app....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jordi
Val: 24
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Jordi (12 intervenciones) el 07/02/2017 22:34:59
Gracias, seguire con el php!

No entiendo tu problema. Capturar o hacer reporte desde el servidor? A que te refieres exactamente?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AndroidStudio, MySQL?

Publicado por Sergio (7 intervenciones) el 09/02/2017 21:55:54
hola, estaba leyendo y estamos trabajando practicamente igual, con el asunto de los php, ahora bien, lo que yo necesito es crear un archivo XLS con los datos de mi BD Remota, encontre unos ejemplos de como hacerlo desde php... y lo hacen de maravilla siempre y cuando los ejecute desde un navegar web de pc, si lo hago desde mi app android no lo descarga..

por si tuvieras una idea gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jordi
Val: 24
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Jordi (12 intervenciones) el 13/02/2017 16:44:13
A lo mejor te digo una tontería, pero has mirado bien los parámetros de la conexión? Que esas maq. virtual o dispositivo móvil depurando?

Es que yo no había programado nunca en android y ahora voy aprendiendo sobre la marcha, y el tema de la ip con dispositivo móvil me hizo perder un poco el tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AndroidStudio, MySQL?

Publicado por Luis (20 intervenciones) el 15/02/2017 20:59:35
¿Que tipo de petición realizas?

Esa petición que realizas ¿retorna algún código o mensaje de error o es un 200 pero sin datos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AndroidStudio, MySQL?

Publicado por Luis (20 intervenciones) el 07/02/2017 21:39:23
Sobre el tema de la seguridad no la marca principalmente el conector, sino la forma en la que tienes protegidos tus datos. Si los endpoints a los que llamas están securizados no tendrías ningún problema en hacer una llamada get o post, mientras tu backend sepa quien eres y estés autorizado a recibir los datos pedidos no habría problema, en cambio si tus endpoints no están securizados cualquiera podría llamarles y pedirles información
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jordi
Val: 24
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Jordi (12 intervenciones) el 07/02/2017 22:36:58
Entonces tu opinas que son igual de seguros los 2 métodos si se utilizan bien?

Lo has usado tu con JDBC?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AndroidStudio, MySQL?

Publicado por Luis (20 intervenciones) el 08/02/2017 22:27:15
Todo depende de la estructura que quieras hacer.

Yo lo entendí mal, decias que tenias unos archivos php con los cuales manejabas la base de datos, entonces yo creía que tu llamarías a los .php y ellos te retornarían la informacion, pero lo que creo que quieres hacer es conectarte directamente desde el móvil a la base de datos y lanzar consultas desde ahí.

JDBC al final lo que hace es conectarse directamente a la base de datos por lo cual necesitas tener unas credenciales en el lado cliente (lo cual a primera vista no suena bien).

Lo que yo creo que es la forma mas segura es no conectar desde el cliente directamente a una Base de Datos, sino tener un API que sea el encargado de manejarlas llamadas. Para esto es necesario tiempo y conocimientos de back pero seria la forma mas segura. En caso que no tengas tiempo yo usaría JDBC sin problema, al final si nos quieren "Robar datos" lo van a hacer de 1000 formas.

Por si te quedas con la duda de la parte back como yo lo haría te lo explico simplemente por curiosidad. Yo soy de .NET pero es aplicable a php.

Si tienes un API puedes exponer un endpoint por ejemplo www.miapi.com/TraeEmpleados. Entonces ese endpoint sera el encargado de consultar a la base de datos y devolverte los datos consultados, con este punto ya evitarías tener las credenciales en el cliente y que si fuese descompilada (como te preocupaba) no estén los datos ahí.


Pero ahora puedes pensar que a ese Endpoint puede llamar cualquiera y este le devolvera datos, si es asi pero eso se puede solucionar con autenticacion basada en tokens. Resumiendo rápidamente esto es que cuando el usuario se loguea en la aplicación movil y cuando haga login se le suministra un token el cual tendrías que enviar en cada una de las peticiones que hicieses a tu endpoint para que asi este sepa quien eres, si puedes realizar esa accion, etc.
Para mi esta es la manera mas segura de transmitir datos desde un dispositivo movil a una base de datos, ya que este token si es esnifado en una llamada por alguien no podra ser usado ya que el origen no sera el mismo que el tiene registrado, tambien este token caduca se le hace refresh para que no sea un token permanente y encima en el puedes insertar datos del cliente como si de una cookie se tratase (Recordar que una aplicacion movil no soporta cookies).

De igual manera puedes pasarle datos a tu endpoint para que busque por esos parametros.

Se que todo esto suena muy remoto y muy complejo pero si te interesa ahi tienes cosas que desde mi punto de vista son interesantes. Respecto a su complejidad en php no sabria decirte pero en .NET hay frameworks y librerias que nos ayudan michisimo y nos facilitan muchisimo todo ese manejo en la parte de backend, podria decirte que esto que te digo de authenticar en la parte backend con las herramienta que tenemos podria estar en 2 - 3 horas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jordi
Val: 24
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Jordi (12 intervenciones) el 09/02/2017 00:44:01
Antes de nada muchas gracias Luis por tu respuesta tan bien explicada.

De hecho voy a explicarte como lo tengo yo para el login:

No he usado frameworks ni librerías, vi un ejemplo y lo aplique mas o menos igual...
En la APP con una URL se conecta al PHP pasando las variables por GET del usuario y passwd. El PHP se encarga de hacer la consulta en la BD y devolver el valor positivo o negativo con un echo en JSON. Y la APP recoge el JSON devuelto y sigue. No se si es mas o menos como tu dices. Creo que si.

Lo de los tokens lo desconocía totalmente y ahora estoy investigando un poco a ver si puedo aplicarlo ya.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AndroidStudio, MySQL?

Publicado por Luis (20 intervenciones) el 09/02/2017 22:07:55
Si, cuando me refiero a endpoint es a una url que entu caso es un php.

Lo bueno de hacerlo así es que proteges mas tu BD que si generas una conexión directa desde el móvil, también si necesitas hacer operaciones de lógica de negocio delegalo en el servidor, así tu aplicación móvil tendrá menos carga de operaciones y sera mas rápida.

Respecto a librerías y framework no tengo ni idea sobre ellos en php ya que soy de otro mundo pero seguramente que existirán las equivalencias para ello.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jordi
Val: 24
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Jordi (12 intervenciones) el 13/02/2017 16:46:57
Ok! Gracias.

Voy a investigar un poco. Yo tampoco soy de android y no veas como estoy perdiendo el tiempo con la investigación xD

Hay que aprender! :P

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AndroidStudio, MySQL?

Publicado por Luis (20 intervenciones) el 15/02/2017 20:45:55
Desde mi punto de vista pegarse con las cosas es bueno porque aunque al principio estemos perdidos con algo al final hace que sepamos que es cada cosa, para que sirve, etc y si queremos aprender es lo que toca.

Así que dale caña, si necesitas algo pues ya sabes.

Pero al final lo que necesitas es hacer una llamada http, no necesitas el conector (Corrígeme si me equivoco) pero al final llamas a un php que el es el encargado de hacer la conexión a la BD y retornarte los datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AndroidStudio, MySQL?

Publicado por Luis (20 intervenciones) el 15/02/2017 20:55:33
Tutoriales y ejemplos hay miles pero:

¿Cualquier código vale?
¿Se adapta exactamente el ejemplo a las necesidades?
¿Podemos mejorarlo?
¿Queremos mejorarlo?

Al final un proyecto real dista mucho de un ejemplo simple, porque hay muchas cosas que pueden afectar. A mi me gustaría ver a muchas de esas personas que se dedican a realizar ejemplos (Basicos) pegarse con un proyecto real, ya que por experiencia (Aun que poca) a muchos de estos "Maquinas" no saben por donde coger un proyecto real en cuanto se sale un poco de la linea.

Recuerda que todos hacemos código lo mejor que sabemos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jordi
Val: 24
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Jordi (12 intervenciones) el 16/02/2017 00:26:00
Pues si, tutoriales y ejemplos hay muchos, pero a la practica... bufff xD

Encontré el slim framework que creo que me ira de fabula, he visto algún ejemplo funcionando y parece justo lo que busco.

Voy a probarlo!!


Gracias y saludoos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edward
Val: 53
Bronce
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Edward (21 intervenciones) el 16/02/2017 00:53:33
Buen día para todos,

Muy buenos puntos de vista los expuestos en este tema, en lo personal considero que en cuanto a seguridad es mejor usar http Request y no odbc, pero al final termina siendo cuestión de gusto propio.

Actualmente estoy usando la librería Volley que es de Google y es muy fácil de usar.

Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jordi
Val: 24
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Jordi (12 intervenciones) el 18/02/2017 14:43:01
Gracias!

Le echare un vistazo que parece fácil de usar

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jordi
Val: 24
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Jordi (12 intervenciones) el 23/02/2017 16:58:27
Oye, te estoy haciendo caso y estoy usando volley y me va perfecto.

Pero ahora tengo un problem...

No se como identificar las parámetros pasados por el php.

Tu como lo utilizas en la salida del php?

Asi?
1
echo json_encode($resul);

O asi?
1
echo "Nombre campo " .  $resul['nombre'], $resul['apellido'];
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edward
Val: 53
Bronce
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AndroidStudio, MySQL?

Publicado por Edward (21 intervenciones) el 23/02/2017 17:16:30
Buen día para todos,

Jordi, El resultado del php lo retorno con Json_Encode sin problemas.

1
echo json_encode($row);

Ahora bien debes tener presente sin el array que le estas pasando al Json es asociativo "MYSQLI_ASSOC" o numerico MYSQLI_NUM para que puedas tener claro como vas a recibir los datos en la app.

http://php.net/manual/es/mysqli-result.fetch-array.php

Yo estoy usando el numérico así.

1
while ($row = $sql->fetch_array(MYSQLI_NUM)

Te recomiendo el programa Postman, que te permite realizar pruebas http request sin necesidad de usar la app, lo que quiere decir es que puedes hacer el envío de los parámetros ya sea por GET o POST al php y el programa te muestra el resultado, para que pruebes tus php y luego que ya estén correctos pasas hacer la prueba con la app.

https://www.getpostman.com/

Te recomiendo mucho ese programa la verdad es muy útil.


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

AndroidStudio, MySQL?

Publicado por Sergio (7 intervenciones) el 23/02/2017 17:55:32
asi obtengo mis datos desde el json que devuelve php, dado que los necesito en listados, solo tomo el nombre del campo y lo asigno a donde lo necesito, esto a su vez lo puedes cortar mas adelante...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
try{
    JSONArray jArray =new JSONArray(result);
    for(int i=0;i<jArray.length();i++){
        JSONObject jsonObject=jArray.getJSONObject(i);
        // add interviewee name to arraylist
        String linea =jsonObject.getString("hora")+", "+jsonObject.getString("nom_emp");
        list.add(linea);
        String linea2 =jsonObject.getString("id_horario")+","+jsonObject.getString("id_emp")+","+jsonObject.getString("id_veh");
        list2.add(linea2);
    }
}
catch(JSONException e){
    e.printStackTrace();
}


un de los listados anteriores lo coloque en un spinner, y de alli sale este codigo:

1
2
3
4
5
6
7
8
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, android.view.View v, int position, long id) {
        valor =  parent.getItemAtPosition(position).toString();
        StringTokenizer tokens = new StringTokenizer(valor, ",");
        valor2 = tokens.nextToken();
        valor3 = tokens.nextToken();
        valor4 = sp.getSelectedItemPosition();
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar