Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Acceso a base de datos MySQL desde Android
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Acceso a base de datos MySQL desde Android

Publicar nuevo tema Responder al tema
Foros de discusión » Android, Java, software para smartphones  Ir a página 1, 2  Siguiente 
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Acceso a base de datos MySQL desde Android Responder citando

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:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=537

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?
MensajePublicado:
Mar Jul 31, 2012 9:05 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Acceso a base de datos MySQL desde Android Responder citando



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:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=537

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.
MensajePublicado:
Jue Sep 27, 2012 5:53 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Acceso a base de datos MySQL desde Android Responder citando



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:

Acceso a MySQL desde Android con Eclipse, Java y JDBC

Además, publicamos de forma completamente gratuita la descarga de la aplicación completa en Eclipse para Android del tutorial anterior:

AjpdSoft Acceso MySQL Android
MensajePublicado:
Sab May 25, 2013 8:37 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: [RESUELTO] Acceso a base de datos MySQL desde Android Responder citando



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:

Acceso a MySQL desde Android con Eclipse, Java y JDBC

Además, publicamos de forma completamente gratuita la descarga de la aplicación completa en Eclipse para Android del tutorial anterior:

AjpdSoft Acceso MySQL Android


Estupendo, excelente artículo, y con la aplicación para Android completa y con el código fuente ¡¡muchas gracias!!
MensajePublicado:
Sab May 25, 2013 8:43 am
Top of PageVer perfil de usuario
Petosia
Usuario


Registrado: Sep 13, 2013
Mensajes: 2

Asunto: Re: Acceso a base de datos MySQL desde Android Responder citando



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:

Acceso a MySQL desde Android con Eclipse, Java y JDBC

Además, publicamos de forma completamente gratuita la descarga de la aplicación completa en Eclipse para Android del tutorial anterior:

AjpdSoft Acceso MySQL Android


Hola

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.
MensajePublicado:
Jue Sep 12, 2013 9:14 pm
Top of PageVer perfil de usuario
Petosia
Usuario


Registrado: Sep 13, 2013
Mensajes: 2

Asunto: Re: Acceso a base de datos MySQL desde Android Responder citando



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:

Acceso a MySQL desde Android con Eclipse, Java y JDBC

Además, publicamos de forma completamente gratuita la descarga de la aplicación completa en Eclipse para Android del tutorial anterior:

AjpdSoft Acceso MySQL Android


Hola

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.
MensajePublicado:
Jue Sep 19, 2013 6:28 am
Top of PageVer perfil de usuario
gabomda
Usuario


Registrado: Oct 23, 2013
Mensajes: 2

Asunto: error de comunications link faillure Responder citando

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
MensajePublicado:
Jue Oct 24, 2013 2:23 pm
Top of PageVer perfil de usuario
pbruccoleri
Usuario


Registrado: Nov 06, 2013
Mensajes: 3

Asunto: Responder citando

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
MensajePublicado:
Mar Nov 05, 2013 10:16 pm
Top of PageVer perfil de usuario
pbruccoleri
Usuario


Registrado: Nov 06, 2013
Mensajes: 3

Asunto: Responder citando

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!
MensajePublicado:
Mie Nov 06, 2013 10:35 am
Top of PageVer perfil de usuario
pbruccoleri
Usuario


Registrado: Nov 06, 2013
Mensajes: 3

Asunto: Responder citando

Hola de nuevo
Modifiqué el ejemplo para tratar de conectarme al servidor Firebird.

coloqué esto:
Class.forName("org.firebirdsql.jdbc.FBDriver");
Connection con = DriverManager
.getConnection(
"jdbc:firebirdsql://localhost:3050/f:/programa/data/BASE.FDB",
"SYSDBA", "masterkey");

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!
MensajePublicado:
Jue Nov 07, 2013 11:40 am
Top of PageVer perfil de usuario
Herchi
Usuario


Registrado: Dec 02, 2013
Mensajes: 1

Asunto: Responder citando

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? icon_sad.gif
MensajePublicado:
Lun Dic 02, 2013 9:55 am
Top of PageVer perfil de usuario
jojojo
Usuario


Registrado: Jan 31, 2014
Mensajes: 2

Asunto: No funciona para veriones android superiores a la 2.2 Responder citando

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!
MensajePublicado:
Mar Feb 04, 2014 12:48 pm
Top of PageVer perfil de usuario
xtract
Usuario


Registrado: Feb 11, 2014
Mensajes: 3

Asunto: Re: No funciona para veriones android superiores a la 2.2 Responder citando



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?
MensajePublicado:
Mar Feb 11, 2014 11:01 am
Top of PageVer perfil de usuario
xtract
Usuario


Registrado: Feb 11, 2014
Mensajes: 3

Asunto: Responder citando

Bueno, parece que algo he conseguido:


Código:


package com.example.prova;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.sql.*;




public class MainActivity extends Activity {
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      final Button button1 = (Button) findViewById(R.id.btconn1);
      final Button button2 = (Button) findViewById(R.id.btconn2);
      
      
        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
                               try
             {
                   String URL = "jdbc:mysql://" + "192.168.1.200" + ":" + "3306";
                   String USER = "app";
                   String PASS = "android";
                  
                   Toast.makeText(getApplicationContext(),
                            "Conectando a servidor MySQL",
                            Toast.LENGTH_SHORT).show();
                      
                   Class.forName("com.mysql.jdbc.Driver").newInstance(); 
                   Connection conn = DriverManager.getConnection(URL, USER, PASS);
                  
                   Toast.makeText(getApplicationContext(),
                            "Conectado Servidor MySQL",
                            Toast.LENGTH_LONG).show();
                  
                   Statement stmt = conn.createStatement();
                  
                   String SQL = "CREATE DATABASE SYNC";
                  
                   stmt.executeUpdate(SQL);
                  
                   conn.close();                
             }
                catch (ClassNotFoundException e)
                {
                   Toast.makeText(getApplicationContext(),
                            "Error: " + e.getMessage(),
                            Toast.LENGTH_SHORT).show();
                }
                catch (SQLException e)
                {
                   Toast.makeText(getApplicationContext(),
                            "Error: " + e.getMessage(),
                            Toast.LENGTH_SHORT).show();
                }
                catch (Exception e)
                { 
                   Toast.makeText(getApplicationContext(),
                            "Error: " + e.getMessage(),
                            Toast.LENGTH_LONG).show();
                }
               
               //Final action on click
            }
        });
       
        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> {
       
      @Override
       protected void onPostExecute(Void result){
         SystemClock.sleep(2000);
       }
       
       @Override
       protected void onPreExecute(){
          SystemClock.sleep(2100);
       }
       
       @Override
       protected void onProgressUpdate(Integer... values){
          SystemClock.sleep(100);
       }
       
       @Override
       protected Void doInBackground(Void... arg0){
          //INICI CODi
          //Conectamos con el servidor de MySQL directamente
            try
           {
               String URL = "jdbc:mysql://" + "192.168.1.200" + ":" + "3306";
               String USER = "app";
               String PASS = "android";
              
               //Toast.makeText(getApplicationContext(),
            //              "Conectando a servidor MySQL",
            //             Toast.LENGTH_SHORT).show();
                  
               Class.forName("com.mysql.jdbc.Driver").newInstance(); 
               Connection conn = DriverManager.getConnection(URL, USER, PASS);
              
               //Toast.makeText(getApplicationContext(),
             //             "Conectado Servidor MySQL",
             //             Toast.LENGTH_LONG).show();
              
               Statement stmt = conn.createStatement();
              
               String SQL = "CREATE DATABASE aSYNC";
              
               stmt.executeUpdate(SQL);
              
               conn.close();                
           }
            catch (ClassNotFoundException e)
            {
               //  Toast.makeText(getApplicationContext(),
               //           "Error: " + e.getMessage(),
               //           Toast.LENGTH_SHORT).show();
            }
            catch (SQLException e)
            {
               //  Toast.makeText(getApplicationContext(),
               //           "Error: " + e.getMessage(),
               //           Toast.LENGTH_SHORT).show();
            }
            catch (Exception e)
            { 
               //   Toast.makeText(getApplicationContext(),
              //            "Error: " + e.getMessage(),
               //           Toast.LENGTH_LONG).show();
            }
            return null;
          //FINAL CODI
       }
   }
}




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 icon_biggrin.gif
MensajePublicado:
Mar Feb 11, 2014 12:58 pm
Top of PageVer perfil de usuario
jojojo
Usuario


Registrado: Jan 31, 2014
Mensajes: 2

Asunto: Crack Responder citando

Qué crack. Esta semana no tengo tiempo. Si puedo la que viene lo pruebo. Muchas gracias!
MensajePublicado:
Jue Feb 13, 2014 7:12 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Android, Java, software para smartphones Ir a página 1, 2  Siguiente 

Cambiar a:  
Key
  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