Carlos Robles frikiblog

Usar bases de datos MySQL desde Android

| 1 Comment

Si necesitas conectarte a un servidor MySQL desde tu aplicación Android, lo más apropiado por diferentes razones, utilizar un archivo PHP remoto que acceda a la base de datos y devuelva la información a la aplicación, por ejemplo en JSON.

Si no quieres hacer esto, o no tienes esta opción, puedes utilizar un driver JDBC, como harías con una aplicación java. Para ello sigue estos pasos:

  • Descargate el driver de aquí: http://dev.mysql.com/downloads/connector/j/3.0.html
  • Si en tu proyecto no tienes una carpeta “libs”, creala ahora.
  • Descomprime el archivo que te has descargado.
  • Mueve o copia el archivo mysql-connector-java-3.0.17-ga-bin.jar
  • Añadelo al build Path, para ello:
    • Clic derecho en el proyecto >  Build Path >Configure Build Path
    • Pestaña Libraries >  Add JAR
    • Busca la carpeta libs y selecciona el archivo Jar.

Una vez está el driver listo, pasamos a la parte de programacion. Como sabemos, Android obliga a hacer las operaciones de acceso a red en un hilo independiente, por tanto debemos elegir una de las formas habituales de crear un nuevo hilo. Por ejemplo, con un AsynkTask. En ese caso añadiriamos este código al método doInBackground.


private static final String url = "jdbc:mysql://{URL_SERVER}/{BASE_DATOS}";
private static final String user = "usuario";
private static final String password = "contraseña";

		int count=0;

		try {
			// The newInstance() call is a work around for some broken Java implementations
                        //con esto nos aseguramos de que se crean los recursos estaticos necesarios
                        Class.forName("com.mysql.jdbc.Driver").newInstance();
			Connection con = DriverManager.getConnection(url, user, password);
			Statement st = con.createStatement();
			ResultSet rs = st
					.executeQuery("QUERY A EJECUTAR");
			while (rs.next()) {

                                 //en cada iteracion tenemos un resultado concreto
                                 //si la query es un "select una_columna, otra_columna from ..." recuerda que rs tiene funciones tales como
				//rs.getString(0) //devuelve una_columna, haciendo cast a string
                                //rs.getDouble(1) //devuelve otra_columna, haciendo cast a Double
                                //etc, que reciben el indice de los valor, y nos devueven el valor haciendo el cast correspondiente.


				publishProgress(++count);
				// Terminar lo antes posible si se ha llamadao al cancel() del asynctask
				if (isCancelled())
					break;

			}

		}

		catch (Exception e) {
			e.printStackTrace();
		}

Facebook Twitter Linkedin Plusone Digg Delicious Reddit Email

One Comment

  1. Buenas tardes, ¿cuáles son las ventajas y desventajas del uso de las 2 formas para acceder a una base de datos?

Leave a Reply

Required fields are marked *.