Asunto: Acceso a base de datos MySQL desde Android
Estoy desarrollando una aplicación para dispositivos móviles con Android, en concreto Samsung Galaxy SIII y LG Optimus x2. Realizo varios procedimientos y guardo algunos datos en SQLite, para ello he seguido vuestro tutorial:
En un punto de la aplicación necesito acceder a al servidor MySQL Server de nuestra empresa, dicho servidor es accesible desde fuera (tengo mapeado el puerto 3306 en el router y configurado MySQL para acceso externo) y funciona bien con otras aplicaciones de Contabilidad y Facturación.
¿Se puede acceder a MySQL Server desde Android? he leído por ahí que Android sólo admite bases de datos SQLite ¿es cierto? ¿hay alguna forma de acceder a MySQL?
Publicado:
Mar Jul 31, 2012 9:05 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Acceso a base de datos MySQL desde Android
Anuncios
varios escribió:
Estoy desarrollando una aplicación para dispositivos móviles con Android, en concreto Samsung Galaxy SIII y LG Optimus x2. Realizo varios procedimientos y guardo algunos datos en SQLite, para ello he seguido vuestro tutorial:
En un punto de la aplicación necesito acceder a al servidor MySQL Server de nuestra empresa, dicho servidor es accesible desde fuera (tengo mapeado el puerto 3306 en el router y configurado MySQL para acceso externo) y funciona bien con otras aplicaciones de Contabilidad y Facturación.
¿Se puede acceder a MySQL Server desde Android? he leído por ahí que Android sólo admite bases de datos SQLite ¿es cierto? ¿hay alguna forma de acceder a MySQL?
Sí que es posible acceder a cualquier motor de base de datos que admita JDBC desde dispositivos Android usando programación Java "normal y corriente". Lo que ocurre es que algunos usuarios (incluso desarrolladores) confunden el hecho de que lo que no se puede es montar un servidor de base de datos MySQL en dispositivos Android, pero sí acceder a uno externo (siempre y cuando haya conexión a Internet o red mediante Wifi).
La única base de datos que admite Android en el propio dispositivo (funcionando de forma autónoma) es SQLite, pero como ya te hemos dicho siempre podrás desarrollar una aplicación para Android que acceda a un servidor de base de datos externo MySQL, Oracle, SQL Server, PostgreSQL usando JDBC.
En breve publicaremos un tutorial explicando todo esto paso a paso.
Publicado:
Jue Sep 27, 2012 5:53 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Acceso a base de datos MySQL desde Android
Anuncios
El tutorial prometido donde explicamos apaso a paso cómo crear una aplicación completa en Eclipse con Java para acceder a un servidor de base de datos MySQL Server desde nuestra aplicación Android usando acceso nativo mediante JDBC:
Asunto: [RESUELTO] Acceso a base de datos MySQL desde Android
Anuncios
alonsojpd escribió:
El tutorial prometido donde explicamos apaso a paso cómo crear una aplicación completa en Eclipse con Java para acceder a un servidor de base de datos MySQL Server desde nuestra aplicación Android usando acceso nativo mediante JDBC:
Estupendo, excelente artículo, y con la aplicación para Android completa y con el código fuente ¡¡muchas gracias!!
Publicado:
Sab May 25, 2013 8:43 am
Petosia Usuario
Registrado: Sep 13, 2013 Mensajes: 2
Asunto: Re: Acceso a base de datos MySQL desde Android
Anuncios
alonsojpd escribió:
El tutorial prometido donde explicamos apaso a paso cómo crear una aplicación completa en Eclipse con Java para acceder a un servidor de base de datos MySQL Server desde nuestra aplicación Android usando acceso nativo mediante JDBC:
Me estoy iniciando en Android y quiero usar MySQL. Tengo instalada en mi máquina Windows 7, Eclipse, MySQL Server 5.6, el conector de java para MySQL 5.1.26.
He seguido los pasos del tutorial pero al hacer el getConnection(url, user, password) siempre me devuelve el error de comunications link faillure, como si no pudiera acceder a mi propia máquina. He comprobado todo: nombres, puertos, firewall, estado del servicio... y no hay manera.
He leído por algún otro sitio que la causa podría ser que el emulador en el que pruebas la aplicación cree que tiene que conectar consigo mismo cuando ve en la url de conexión "localhost" o "127.0.0.1" y la solución que propone es instalar MySQL en otra máquina independiente para que el emulador acceda a una ruta que no sea localhost.
¿Es cierto? ¿Cómo podría evitar que el emulador eso?
Gracias y por cierto, me ha encantado el tutorial. Me ha servido mucho.
Publicado:
Jue Sep 12, 2013 9:14 pm
Petosia Usuario
Registrado: Sep 13, 2013 Mensajes: 2
Asunto: Re: Acceso a base de datos MySQL desde Android
Anuncios
He encontrado la solución.
Cuando usas un emulador de Android, la IP de tu localhost no es 127.0.0.1 sino la 10.0.2.2.
Petosia escribió:
alonsojpd escribió:
El tutorial prometido donde explicamos apaso a paso cómo crear una aplicación completa en Eclipse con Java para acceder a un servidor de base de datos MySQL Server desde nuestra aplicación Android usando acceso nativo mediante JDBC:
Me estoy iniciando en Android y quiero usar MySQL. Tengo instalada en mi máquina Windows 7, Eclipse, MySQL Server 5.6, el conector de java para MySQL 5.1.26.
He seguido los pasos del tutorial pero al hacer el getConnection(url, user, password) siempre me devuelve el error de comunications link faillure, como si no pudiera acceder a mi propia máquina. He comprobado todo: nombres, puertos, firewall, estado del servicio... y no hay manera.
He leído por algún otro sitio que la causa podría ser que el emulador en el que pruebas la aplicación cree que tiene que conectar consigo mismo cuando ve en la url de conexión "localhost" o "127.0.0.1" y la solución que propone es instalar MySQL en otra máquina independiente para que el emulador acceda a una ruta que no sea localhost.
¿Es cierto? ¿Cómo podría evitar que el emulador eso?
Gracias y por cierto, me ha encantado el tutorial. Me ha servido mucho.
Publicado:
Jue Sep 19, 2013 6:28 am
gabomda Usuario
Registrado: Oct 23, 2013 Mensajes: 2
Asunto: error de comunications link faillure
Hola mi nombre es Gabriel, me estoy iniciando en la programacion androidy gracias al foro y los tutoriales de ajpdsoft.com e aprendido un poco mas. Estoy realizando el tutorial para conectarme a una base de datos mysql, e probado la conexion y funciona sin problemas pero desde el ejemplo propuesto no lo e podido lograr. El servidor Mysql se encuentra alojado en un servidor con una IP fija, e puesto todos los datos de la conexion y bajado en conectar jdbc version 5.1.24 y cuando ejecuto la conexion desde mi aplicacion android me devuelde el siguiente error:
error: comunications link failure
the last packet send succesfully to the server was 0 milliseconds ago.the driver has not recived any packets from the servers.
por necesito ayuda ya que nose cual pueda ser el problema. La app la estoy desarrollando sobre el api 17 y e bajado la nueva version del driver jdbc y sigo sin solucinarlo. El servidor funciona a la perfeccion porque se encuentra corriendo otras aplicaciones y sin ningun problemas. Espero su respuesta.
Gracias!
Gabriel
Publicado:
Jue Oct 24, 2013 2:23 pm
pbruccoleri Usuario
Registrado: Nov 06, 2013 Mensajes: 3
Asunto:
A mi tampoco me funciona el ejemplo, y no tengo problemas con el servidor mysql. QUizás sea que el jar de mysql debe corresponder a la versión q tenemos instalada. La versión que tengo es la 5.6
Publicado:
Mar Nov 05, 2013 10:16 pm
pbruccoleri Usuario
Registrado: Nov 06, 2013 Mensajes: 3
Asunto:
Al final he podido hacer funcionar el ejemplo tanto en el emulador como en una tablet. Resultó q era un problemita en la red.
Solo quería aclararlo. Muchas gracias por el material!
Publicado:
Mie Nov 06, 2013 10:35 am
pbruccoleri Usuario
Registrado: Nov 06, 2013 Mensajes: 3
Asunto:
Hola de nuevo
Modifiqué el ejemplo para tratar de conectarme al servidor Firebird.
Agregué la librería correspondiente: jaybird-full-2.2.3.jar
Uso Firebird 2.1.5
Cuando voy a probar conexión, sale el error:
Error: org.firebirdsql.jdbc.FBDriver
Hice un proyecto de prueba en netbeans, java modo consola y puedo conectarme perfectamente y hacer consultas, usando el mismo código.
Alguna idea???? muchas gracias!
Publicado:
Jue Nov 07, 2013 11:40 am
Herchi Usuario
Registrado: Dec 02, 2013 Mensajes: 1
Asunto:
pues he descargado el proyecto (con algún que otro problema como que las tilde de contraseña en R.java lo volvía loco) y he ejecutado la app pero me da el siguiente error:
Código:
12-02 11:26:04.860: E/AndroidRuntime(8180): FATAL EXCEPTION: main
12-02 11:26:04.860: E/AndroidRuntime(8180): java.lang.NullPointerException: println needs a message
12-02 11:26:04.860: E/AndroidRuntime(8180): at android.util.Log.println_native(Native Method)
12-02 11:26:04.860: E/AndroidRuntime(8180): at android.util.Log.e(Log.java:297)
12-02 11:26:04.860: E/AndroidRuntime(8180): at com.example.ajpdsoftmysql.AjpdSoftMySQL.ejecutarConsultaSQL(AjpdSoftMySQL.java:313)
12-02 11:26:04.860: E/AndroidRuntime(8180): at com.example.ajpdsoftmysql.AjpdSoftMySQL$2.onClick(AjpdSoftMySQL.java:83)
12-02 11:26:04.860: E/AndroidRuntime(8180): at android.view.View.performClick(View.java:4211)
12-02 11:26:04.860: E/AndroidRuntime(8180): at android.view.View$PerformClick.run(View.java:17267)
12-02 11:26:04.860: E/AndroidRuntime(8180): at android.os.Handler.handleCallback(Handler.java:615)
12-02 11:26:04.860: E/AndroidRuntime(8180): at android.os.Handler.dispatchMessage(Handler.java:92)
12-02 11:26:04.860: E/AndroidRuntime(8180): at android.os.Looper.loop(Looper.java:137)
12-02 11:26:04.860: E/AndroidRuntime(8180): at android.app.ActivityThread.main(ActivityThread.java:4898)
12-02 11:26:04.860: E/AndroidRuntime(8180): at java.lang.reflect.Method.invokeNative(Native Method)
12-02 11:26:04.860: E/AndroidRuntime(8180): at java.lang.reflect.Method.invoke(Method.java:511)
12-02 11:26:04.860: E/AndroidRuntime(8180): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
12-02 11:26:04.860: E/AndroidRuntime(8180): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
12-02 11:26:04.860: E/AndroidRuntime(8180): at dalvik.system.NativeStart.main(Native Method)
el error lo da cuando intenta esta línea:
Código:
Statement st = conexionMySQL.createStatement();
es una base de datos mysql que puedo acceder a ella con un cliente (MySQL-Front)
mismamente la app 'Configuración' que trae vuestro proyecto cuando le doy a 'Probar conexión' me escupe: "error: Could not create connection to database error".
¿Qué está pasando?
Publicado:
Lun Dic 02, 2013 9:55 am
jojojo Usuario
Registrado: Jan 31, 2014 Mensajes: 2
Asunto: No funciona para veriones android superiores a la 2.2
Hace días que me estoy peleando con este programa. Por fin ya he hecho que funcione pero solo para la versión 2.2 de android.
Según he leído este código no funciona para veriones android superiores a la 2.2 porque lo que hay que hacer es lanzar la petición en un thread diferente o usando una asynctask. El problema es que mis conocimientos aún no llegan a tanto. ¿Nadie tiene el código correcto que funcione para las versiones más nuevas?
Muchas gracias. Saludos!
Publicado:
Mar Feb 04, 2014 12:48 pm
xtract Usuario
Registrado: Feb 11, 2014 Mensajes: 3
Asunto: Re: No funciona para veriones android superiores a la 2.2
Anuncios
jojojo escribió:
Hace días que me estoy peleando con este programa. Por fin ya he hecho que funcione pero solo para la versión 2.2 de android.
Según he leído este código no funciona para veriones android superiores a la 2.2 porque lo que hay que hacer es lanzar la petición en un thread diferente o usando una asynctask. El problema es que mis conocimientos aún no llegan a tanto. ¿Nadie tiene el código correcto que funcione para las versiones más nuevas?
Muchas gracias. Saludos!
yo estoy con las mismas, has conseguido algo con asynctask?
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
new MiTareaAsincrona().execute();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public class MiTareaAsincrona extends AsyncTask<Void, Integer, Void> {
En este programa el boton1 funciona con sdk 9 o menor, el otro funciona con sdk 18 como mínimo por lo que parece. Se tiene que tener en cuenta que dentro de las aplicaciones asynctask no se pueden hacer cambios en la UI, por lo tanto no se pueden usar los toast. El código no está muy limpio pero queda claro que se puede usar jdbc con API mayor a 9
Publicado:
Mar Feb 11, 2014 12:58 pm
jojojo Usuario
Registrado: Jan 31, 2014 Mensajes: 2
Asunto: Crack
Qué crack. Esta semana no tengo tiempo. Si puedo la que viene lo pruebo. Muchas gracias!
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A