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»:
- 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.
- 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».
- /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.
- 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.
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» />
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
android:title=»@string/text_menu_configuracion»
android:orderInCategory=»100″
android:showAsAction=»never»
/>android:title=»@string/text_acercade»>
Añadir segundo activity para introducción de los datos de conexión con servidor MySQL
- 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».
- 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.
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» />
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
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):
Ejemplo acceso a BD MySQL desde Android con JDBC y Eclipse
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
Connection conexionMySQL;
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….