Android y MySQL con Eclipse

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

“File” – “New” – “Project”:
Desplegaremos “Android” y seleccionaremos “Android Application Project”:

Introduciremos los datos para el nuevo proyecto Eclipse para dispositivos Android:
  • Application Name: nombre de la aplicación, no recomendamos nombres muy largos pues de lo contrario no cabrán en los títulos y demás donde aparezcan. En nuestro ejemplo la llamaremos “AccesoMySQL”.
  • Project Name: nombre del nuevo proyecto Eclipse Android, por ejemplo “AjpdSoftMySQL”.
  • Package Name: nombre del paquete, por ejemplo “com.example.ajpdsoftmysql”.
  • Buil SDK: API level con el que se compilará la aplicación, por ejemplo “Android 4.1 (API 16).
  • Minimun Required SDK: este campo es importante, deberemos indicar el API level mínimo requerido, a mayor API Level menor número de dispositivos Android soportarán nuestra aplicación. Por lo tanto deberemos indicar el API level más pequeño posible, según los procedimientos que usemos y los imports requeriremos uno u otro. En nuestro caso el API Level mínimo será 5 (API 5: Android 2.0 (Eclair).
  • Create custom launcher icon: si queremos que el asistente nos permita crear un icono para nuestra aplicación marcaremos este check.
  • Create Project in Workspace: maraceremos esta opción para crear el nuevo proyecto Android en el espacio de trabajo del usuario por defecto.
Tras introducir los datos para el nuevo proyecto Eclipse para dispositivos Android pulsaremos “Next”:
Si hemos seleccionado la opción de crear un icono para la aplicación, el asistente nos mostrará la ventana para crear el icono personalizado, podremos cambiar el icono, cambiar color de fondo y otras opciones
Marcaremos “Create Activity” para crear una activity (ventana) principal de la aplicación, seleccionaremos el tipo de activity que crearemos, en nuestro caso “BlankActivity”:
Introduciremos los datos para la nueva activity:
  • Activity Name: nombre del activity (ventana), por ejemplo “AjdSoftMySQL”.
  • Layout Name: nombre del fichero xml que contendrá los componentes visuales de la activity, por ejemplo “activity_ajpd_soft_my_sql”.
  • Navitagion Type: podremos elegir aquí el tipo de navegación para la nueva actividad, las opciones: Tabs, Tabs + Swipe, Swipe Views + Title Strip y Dropdown. Estos tipos de navegación requerirán API Level iguales o superiores a la 14.
  • Title: título para la activity, por ejemplo “Acceso MySQL”.
Para más información sobre los activity de Android podéis vistar este tutorial:
Tras introducir los datos para el activity pulsaremos “Finish” para crear el proyecto:
El asistente para añadir un nuevo proyecto Eclipse para dispositivos Android creará todos los ficheros necesarios para el proyecto, a continuación indicamos algunos de los más importantes:
  • /src/AjpdSoftMySQL.java: código java de la activity principal del proyecto. En este fichero colocaremos todo el código java de nuestra aplicación Android, al menos todo el que tenga que ver con su activity correspondiente.
  • /bin/AndroidManifest.xml: fichero de configuración principal de la aplicación donde se indicarán, por ejemplo, todas las activity de la aplicación.
  • /res/drawable-hdpi, /res/drawable-ldpi, /res/drawable-mdpi, /res/drawable-xhdpi: carpetas del proyecto donde se guardarán los ficheros de imágenes (iconos y demás) para las diferentes resoluciones.
  • /res/layout/activity_ajpd_soft_my_sql.xml: carpeta y fichero para el layout, donde se indicarán los componentes gráficos del activity relacionado, en este fichero indicaremos todo lo que el usuario verá en la aplicación Android de su móvil.
  • /res/menu/activity_ajpd_soft_my_sql.xml: carpeta y fichero con los datos necesarios para mostrar el menú de nuestra aplicación, lo usaremos para mostrar el segundo activity que crearemos posteriormente para indicar los datos de conexión con el servidor MySQL.
  • /res/values/strings.xml: en este fichero indicaremos todas las cadenas de texto que se mostrarán al usuario en los menús, botones, etiquetas, mensajes, etc.
El asistente nos dejará la pestaña del layout abierta, para edición en modo gráfico, añadiremos al layout del activity principal de la aplicación los siguientes componentes:
  • De la paleta “Form Widgets” añadiremos un “Spinner”, en este desplegable mostraremos los catálogos (bases de datos) del servidor de MySQL al que nos conectemos.
  • De la paleta “Form Widgets” añadiremos un Button, este botón será el que pulse el usuario para obtener los catálogos del servidor MySQL.
  • De la paleta “Text Fields” añadiremos un “EditText” multilínea (Multiline Text), en este campo el usuario podrá introducir la consulta SQL a ejecutar contra el servidor MySQL.
  • De la paleta “Form Widgets” añadiremos un “CheckBox”, en este check el usuario marcará si es una consulta de selección (SELECT, DESC, SHOW) o es una consulta de modificación de datos (INSERT, UPDATE, DROP,CREATE, ALTER).
  • De la paleta “Form Widgets” añadiremos un Button, este botón será el que pulse el usuario para ejecutar la consulta SQL.
  • De la paleta “Text Fields” añadiremos un “EditText” multilínea (Multiline Text), en este campo la aplicación devolverá el resultado de la ejecución de laconsulta SQL.
  • De la paleta “Text Fields” añadiremos un “TextView” en el que mostraremos un texto de aviso al usuario para que, si la consulta SQL es grande, use la cláusula LIMIT para limitar los registros a mostrar y que la aplicación no se ralentice en exceso.
Todos estos datos visuales se guardarán en el fichero /res/layout/activity_ajpd_soft_my_sql.xml, en nuestro caso tendrá este contenido:

xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent” >

android:id=”@+id/lsCatalogos”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_toLeftOf=”@+id/btCatalogos” />


android:id=”@+id/txtSQL”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentRight=”true”
android:layout_below=”@+id/lsCatalogos”
android:ems=”10″
android:hint=”@string/text_SQL_Ejecutar”
android:inputType=”textMultiLine” >


android:id=”@+id/txtResultadoSQL”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentRight=”true”
android:layout_below=”@+id/btEjecutar”
android:ems=”10″
android:inputType=”textMultiLine|none” />

android:id=”@+id/btCatalogos”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBottom=”@+id/lsCatalogos”
android:layout_alignParentRight=”true”
android:layout_alignParentTop=”true”
android:text=”@string/text_catalogos” />

android:id=”@+id/btEjecutar”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentRight=”true”
android:layout_below=”@+id/txtSQL”
android:text=”@string/text_ejecutar” />

android:id=”@+id/opConsultaModificacion”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBaseline=”@+id/btEjecutar”
android:layout_alignBottom=”@+id/btEjecutar”
android:layout_alignParentLeft=”true”
android:text=”@string/text_consulta_seleccion” />

android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_below=”@+id/txtResultadoSQL”
android:text=”@string/text_aviso_SQL” />

El contenido del fichero donde se guardarán todas las cadenas de texto que usaremos en la aplicación “res/values/strings.xml“:


Acceso MySQL
Configuración
Acceso MySQL
Consulta SQL a ejecutar
Ejecutar
Resultado SQL
Acerca de …
Configuración
IP/Nombre red servidor
Puerto
Usuario
Contraseña
Base de datos
Acerca de
Guardar configuración
Catálogo/BD
Probar conexión
Catálogos
SQL de modificación
Utiliza LIMIT en las consultas SQL de selección,
si devuelven muchos registros podrían provocar que la
aplicación se ralentice en exceso o incluso deje de funcionar.
Por ejemplo: nselect * from factura limit 0,10 n(mostrará los 10
primeros registros)”
Introduzca consulta SQL

El contenido del fichero que mostrará el menú en el activity “/res/layout/menu/activity_ajpd_soft_my_sql.xml“:


android:title=”@string/text_menu_configuracion”
android:orderInCategory=”100″
android:showAsAction=”never”
/>

android:title=”@string/text_acercade”> 

Podremos compilar la aplicación para probarla y ver cómo quedan los componentes visuales, de momento ningún botón funcionará pues aún no lo hemos programado, pero nos servirá para comprobar que todo es correcto. Para ello pulsaremos en “Run” – “Run”:
Seleccionaremos “Android Application” y pulsaremos “OK”:
Si todo es correcto se iniciará el emulador de dispositivos Android y se ejecutará la aplicación:

Añadir segundo activity para introducción de los datos de conexión con servidor MySQL

Nuestra aplicación de ejemplo contará con dos activity, por un lado el anteriormente creado que será el principal, donde el usuario introducirá la consulta SQL a ejecutar y donde se mostrará el resultado. Por otro lado, nuestra aplicación requerirá de un segundo activity donde solicitaremos al usuario los datos de acceso al servidor MySQL al que nos conectaremos (IP, puerto, base de datos, usuario, contraseña).
Para añadir un segundo activity a nuestra aplicación para dispositivos Android desde Eclipse, pulsaremos con el botón derecho del ratón sobre el proyecto y seleccionaremos “New” – “Other”:
Desplegaremos “Android” y seleccionaremos “Android Activity”:
Seleccionaremos “BlankActivity” y pulsaremos “Next”:
Introduciremos los datos para el nuevo Activity:
  • Activity Name: nombre del activity (ventana), por ejemplo “Activity_Configuracion”.
  • Layout Name: nombre del fichero xml que contendrá los componentes visuales de la activity, por ejemplo “activity_activity_configuracion”.
  • Navitagion Type: podremos elegir aquí el tipo de navegación para la nueva actividad, las opciones: Tabs, Tabs + Swipe, Swipe Views + Title Strip y Dropdown. Estos tipos de navegación requerirán API Level iguales o superiores a la 14. Seleccionaremos “None”.
  • Title: título para la activity, por ejemplo “Configuración”.
Pulsaremos “Finish”:
El asistente nos dejará la pestaña del layout abierta, para edición en modo gráfico, añadiremos al layout del activity secundario (el que mostrará los datos de conexión al servidor MySQL) los siguientes componentes:
  • De la paleta “Text Fields” añadiremos un “TextView” en el que mostraremos un texto “IP/Nombre red servidor”.
  • De la paleta “Text Fields” añadiremos un “EditText”, en este campo el usuario introducirá la IP/DNS del servidor de MySQL al que quiera conectarse.
  • De la paleta “Text Fields” añadiremos un “TextView” en el que mostraremos un texto “Puerto”.
  • De la paleta “Text Fields” añadiremos un “EditText”, en este campo el usuario introducirá el puerto del servidor de MySQL al que quiera conectarse.
  • De la paleta “Text Fields” añadiremos un “TextView” en el que mostraremos un texto “Usuario”.
  • De la paleta “Text Fields” añadiremos un “EditText”, en este campo el usuario introducirá el usuario del servidor de MySQL al que quiera conectarse.
  • De la paleta “Text Fields” añadiremos un “TextView” en el que mostraremos un texto “Contraseña”.
  • De la paleta “Text Fields” añadiremos un “EditText”, en este campo el usuario introducirá la contraseña del servidor de MySQL al que quiera conectarse.
  • De la paleta “Form Widgets” añadiremos un Button, este botón será el que pulse el usuario para ejecutar la consulta SQL.
Todos estos datos visuales se guardarán en el fichero /res/layout/activity_activity_configuracion.xml, en nuestro caso tendrá este contenido:

xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent” >

android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentTop=”true”
android:text=”@string/text_IP” />

android:id=”@+id/txtIP”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentRight=”true”
android:layout_below=”@+id/textView1″
android:ems=”10″
android:inputType=”text” >



android:id=”@+id/textView2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_below=”@+id/txtIP”
android:text=”@string/text_Puerto” />

android:id=”@+id/txtPuerto”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentRight=”true”
android:layout_below=”@+id/textView2″
android:inputType=”number”
android:ems=”10″ />

android:id=”@+id/textView4″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_below=”@+id/txtPuerto”
android:text=”@string/text_Usuario” />

android:id=”@+id/txtUsuario”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentRight=”true”
android:layout_below=”@+id/textView4″
android:inputType=”text”
android:ems=”10″ />

android:id=”@+id/textView3″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_below=”@+id/txtUsuario”
android:text=”@string/text_Contraseña” />

android:id=”@+id/txtContrasena”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentRight=”true”
android:layout_below=”@+id/textView3″
android:inputType=”textPassword”
android:ems=”10″ />

android:id=”@+id/btProbarConexion”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_below=”@+id/txtContrasena”
android:layout_centerHorizontal=”true”
android:layout_marginTop=”16dp”
android:text=”@string/text_probar_conexion” />

Este activity también incorporará un menú, el fichero xml del menú “/res/layout/menu/activity_activity_config.xml“:



android:title=”@string/text_menu_guardar_configuracion”
android:orderInCategory=”100″/>
android:title=”@string/text_acercade”>

Descargar y añadir JDBC a proyecto Eclipse para acceso a MySQL desde Android

En primer lugar necesitaremos el JDBC para el motor de base de datos al que queramos acceder desde Android, en nuestro caso, como ejemplo, accederemos a un servidor de MySQL Server instalado en un equipo Linux. Para descargar el JDBC accederemos a la web oficial del motor de base de datos y descargaremos el fichero correspondiente al JDBC, para MySQLaccederemos a la URL:

http://dev.mysql.com/downloads/connector/j

A la fecha de este tutorial descargamos la versión Connector/J 5.1.24, podremos descargar el .tar o el .zip, ambos son válidos para cualquier sistema operativo. Una vez descargado el fichero mysql-connector-java-5.1.24.zip lo descomprimiremos pulsando con el botón derecho del ratón sobre él y seleccionado “Extraer aquí”:

Dentro de este fichero comprimido habrá varios (.jar, documentación, código fuente), el importante es el mysql-connector-java-5.1.24-bin.jar, copiaremos este fichero (pulsando sobre él con el botón derecho):

Desde Eclipse, exploraremos nuestro proyecto Android, pulsaremos con el botón derecho sobre la carpeta “libs” y pulsaremos en “Paste” (para pegar el fichero .jar del conector de MySQL):

Ejemplo acceso a BD MySQL desde Android con JDBC y Eclipse

Una vez agregado el conector .jar a nuestro proyecto (como hemos indicado aquí) ya podremos usar todas las funciones y prodedimientos para conectar con el motor de base de datosMySQL desde nuestra aplicación Android con Eclipse. Para ello será tan sencillo como agregar en los imports de nuestro fichero .java lo siguiente:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.sql.Statement;

Añadiremos la siguiente variable de tipo “Connection”, que usaremos para conectarnos sólo una vez durante el proceso de ejecución de una consulta SQL en MySQL:

Connection conexionMySQL;

Añadiremos un procedimiento para conectarnos al servidor MySQL, así podremos usarlo cada vez que lo necesitemos. Dicho procedimiento necesitará usuario, contraseña, IP o DNS, puerto y catálogo del servidor de MySQL al que nos conectaremos, si hay algún error lo capturará y lo mostrará en una notificación Android:
    public void conectarBDMySQL (String usuario, String contrasena, 
      String ip, String puerto, String catalogo)
    {
     if (conexionMySQL == null)     
     {
      String urlConexionMySQL = "";
      if (catalogo != "")
       urlConexionMySQL = "jdbc:mysql://" + ip + ":" + puerto + "/" + catalogo;
      else
       urlConexionMySQL = "jdbc:mysql://" + ip + ":" + puerto;
      if (usuario != "" & contrasena != "" & ip != "" & puerto != "")
      {
       try 
       {
     Class.forName("com.mysql.jdbc.Driver");
        conexionMySQL = DriverManager.getConnection(urlConexionMySQL, 
          usuario, contrasena);     
    } 
       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();
    }
      }
     } 

    }

y sigue…. 

Es tán fácil compartir...Pin on PinterestShare on FacebookShare on Google+Tweet about this on Twitter

Deja un comentario