En este video te explicamos en detalle todo el proceso para publicar una Aplicación Android…
Ejemplo de conexión Android con base de datos MySQL
3.
Ejemplo de conexión Android con base de datos MySQL
En este tutorial vamos a desarrollar un ejemplo de conexión de una Aplicación Android con una base de datos externa MySQL.
El proyecto estará formado por dos Activities. La primera, llamada «MainActivity.java«, se encargará de recoger los datos para establecer la conexión del servidor MySQL y enviarlos a la siguiente Activity. La segunda Activity, llamada «ConsultasMySQL.java«, se encargará de recoger los datos de la conexión establecida y permitir al usuario realizar consultas sobre una base de datos construida en el SGBD MySQL.
Al final de este tutorial, puedes descargar todo el código del proyecto.
Estructura de Base de Datos
La Base de Datos se llama «tienda«. Estará formada por dos tablas llamadas «cliente» y «factura«, en las que se establece la relación entre el campo «dni» y el campo «dni_cliente»
Consultas SQL
Base de datos: tienda
1 2 |
CREATE DATABASE IF NOT EXISTS `tienda` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `tienda`; |
Estructura de la tabla cliente
1 2 3 4 5 6 7 8 |
CREATE TABLE IF NOT EXISTS `cliente` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dni` varchar(9) NOT NULL, `nombre` varchar(25) NOT NULL, `apellidos` varchar(25) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `FK_Cliente` (`dni`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; |
Estructura de tabla factura
1 2 3 4 5 6 |
CREATE TABLE IF NOT EXISTS `factura` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dni_cliente` varchar(9) NOT NULL, `codigo_factura` int(5) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; |
ConsultasMySQL/src/com.academiaandroid.consultasmysql/MainActivity.java
Elementos necesarios:
- 4 componentes de tipo EditText para indicar los parámetros de conexión.
- 1 componente de tipo Button para conectar con el servidor MySQL.
- Librería JDBC para MySQL «mysql-connector-java-5.1.31-bin.jar».
- Establecer permisos de Internet en AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET"/>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
[...] //Se referencian las Clases necesarias para la conexión con el Servidor MySQL import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; [...] //Declaramos los componentes necesarios para introducir los datos de conexión al servidor private EditText edServidor; private EditText edPuerto; private EditText edUsuario; private EditText edPassword; private String baseDatos = "Tienda"; [...] //Enlazamos los componentes con los recursos definidos en el layout edServidor = (EditText)findViewById(R.id.edServidor); edPuerto = (EditText)findViewById(R.id.edPuerto); edUsuario = (EditText)findViewById(R.id.edUsuario); edPassword = (EditText)findViewById(R.id.edPassword); [...] //Función que establecerá la conexión con el Servidor si los datos introducidos son correcto. //Devuelve un valor de verdadero o falso que indicará si se ha establecido la conexión public boolean conectarMySQL() { try{ //Cargamos el driver del conector JDBC Class.forName(driver).newInstance (); //Establecemos la conexión con el Servidor MySQL indicándole como parámetros la url construida, //la Base de Datos a la que vamos a conectarnos, y el usuario y contraseña de acceso al servidor conexionMySQL = DriverManager.getConnection(urlMySQL + baseDatos, user, password); //Comprobamos que la conexión se ha establecido if(!conexionMySQL.isClosed()) { estadoConexion = true; Toast.makeText(MainActivity.this,"Conexión Establecida", Toast.LENGTH_LONG).show(); } }catch(Exception ex) { Toast.makeText(MainActivity.this,"Error al comprobar las credenciales:" + ex.getMessage(), Toast.LENGTH_LONG).show(); } [...] //Evento On Click que realiza la llamada a la función conectarMySQL() obteniendo el valor de verdadero //o falso para la petición de conexión public void abrirConexion(View view) { Intent intent = new Intent(this,ConsultasSQL.class); //Si el valor devuelto por la función es true, pasaremos los datos de la conexión a la siguiente Activity if(conectarMySQL() == true) { Toast.makeText(this, "Los datos de conexión introducidos son correctos.", Toast.LENGTH_LONG).show(); intent.putExtra("servidor", edServidor.getText().toString()); intent.putExtra("puerto", edPuerto.getText().toString()); intent.putExtra("usuario", edUsuario.getText().toString()); intent.putExtra("password", edPassword.getText().toString()); intent.putExtra("datos", baseDatos); startActivity(intent); } } [...] |
ConsultasMySQL/src/com.academiaandroid.consultasmysql/ConsultasSQL.java
Elementos necesarios:
- 4 componentes de tipo TextView para mostrar los datos de conexión
- 2 componentes de tipo EditText para realizar la consulta y mostrar los resultados
- 1 componente de tipo Button para ejecutar la consulta
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
[...] //Se referencian las Clases necesarias para la conexión con el Servidor MySQL import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; [...] //Declaramos los componentes y clases necesarias para realizar consultas a una base de datos en MySQL private TextView txtBaseDatos; private EditText edConsulta; private TextView txtResultados; private TextView txtPuerto; private TextView txtServidor; private TextView txtUsuario; private Statement st; private ResultSet rs; private Connection con; private Bundle bundle; private String baseDatos = "Tienda"; [...] //Enlazamos los componentes con los recursos definidos en el layout txtBaseDatos = (TextView)findViewById(R.id.txtBaseDatos); edConsulta = (EditText)findViewById(R.id.edConsulta); txtResultados = (TextView)findViewById(R.id.txtResultados); txtPuerto = (TextView)findViewById(R.id.txtPuerto); txtServidor = (TextView)findViewById(R.id.txtServidor); txtUsuario = (TextView)findViewById(R.id.txtUsuario); bundle = getIntent().getExtras(); //Obtenemos los valores introducidos en la Activity principal txtPuerto.setText(bundle.getString("puerto")); txtServidor.setText(bundle.getString("servidor")); txtBaseDatos.setText(bundle.getString("datos")); txtUsuario.setText(bundle.getString("usuario")); [...] //Cargamos el driver del conector JDBC Class.forName(driver).newInstance (); //Establecemos la conexión con el Servidor MySQL indicándole como parámetros la url construida, //la Base de Datos a la que vamos a conectarnos, y el usuario y contraseña de acceso al servidor con = DriverManager.getConnection(urlMySQL + baseDatos, txtUsuario.getText().toString(), "110904"); st = con.createStatement(); //Se ejecutará la consulta indicada en el campo edConsulta rs = st.executeQuery(edConsulta.getText().toString()); [...] |
ConsultasMySQL/res/layout/activty_main.xml
*Se define un <TableLayout> que estará formado por varios en el que se incluirán los componentes para introducir los datos de la conexión.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[...] <TableLayout android:layout_width="match_parent" android:layout_height="match_parent" > <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" > <EditText android:id="@+id/edServidor" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="Dirección Servidor" > <requestFocus /> </EditText> </TableRow> </TableLayout> [...] |
ConsultasMySQL/res/layout/activity_consultas_sql.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
[...] <TableLayout android:layout_width="match_parent" android:layout_height="match_parent" > <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <EditText android:id="@+id/edConsulta" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="Introducir Consulta Transact-SQL" /> </TableRow> <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/btnEjecutar" style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="mostrarResultados" android:text="Ejecutar Consulta" /> </TableRow> </TableLayout> [...] |
Imágenes de la Aplicación
Descarga del proyecto
DownloadEsta entrada tiene 4 comentarios
Los comentarios están cerrados.
Excelente tutorial me gusto mucho ya me suscribiii
Gracias, nos alegra que te haya servido
Cual es el medio de pago?
Víctor, el pago se realiza con Paypal. Si necesitas cualquier aclaración adicional, puedes contactar con nosotros en el email informacion[arroba]academiaandroid.com
(discúlpanos porque no habíamos visto el comentario por los problemas con el spam)