Buenas amigos, en este tutorial vamos a hablar de uno de los temas mas
potentes que tiene java, y a los que a muchos nos interesa,
una conexión a una base de datos
mysql. Mencionar que aunque podríamos conectar cualquier otro motor de base de datos
(sqlite, oracle, access, sqlserver....) yo lo voy a realizar con
mysql, más que nada porque ya lo tengo instalado. Así pues, explicaremos:
- Conectar nuestra aplicación java a la base de datos.
- Recorrer las tablas de la base de datos.
Bien, no voy a explicar en este tema como montar un servicio
mysql,
ya que me quedaría demasiado extenso, más adelante es posible que me
anime, pero por el momento vamos a ver solamente el código necesario
para conectarnos a nuestra base de datos y recorrer sus tablas. Podéis
buscar en Google como montar un servicio
mysql, hay tutoriales a patadas.
Lo primero de todo es descargarnos la librería o conector para poder trabajar con mysql:
[descargar conector]
Es imprescindible para poder conectar nuestra base de datos. Así pues,
para cada tipo de motor de base de datos necesitaremos su librería o
conector, lo cual, normalmente, se ofrece en la página principal del
fabricante que utilicemos. Es algo muy común.
una vez descargado el conector, lo agregamos en nuestro proyecto, para ello hacemos lo siguiente:
- Pulsamos sobre nuestro proyecto con el botón derecho del ratón y pulsamos, al final de la lista desplegable, en propiedades.
- Una vez hecho esto se nos abrirá una ventana donde elegiremos la opción "vía de construcción":
- En la siguiente ventana que se nos abre, elegiremos la pestaña "Biblioteca" y pulsaremos sobre la opción "Añadir JAR externo...", donde nos permitirá elegir nuestro conector descargado:
- Una vez elegido nuestro conector, se nos mostrará en la vía de construcción y habremos agregado a nuestro proyecto una nueva librería.
Bien, ya tenemos nuestra librería dentro de nuestro proyecto. Antes de
nada me gustaría agregar que voy a trabajar sobre una base de datos
llamada empresa con una tabla llamada empleados. Dicha tabla constara de
3 columnas:
Bueno, ahora lo que nos toca crear es una clase capaz de establecer una conexión. Esta clase constará de 4 atributos:
- private static String servidor: Aquí colocaremos la ruta de nuestra base de datos.
- private static String user: El nombre de usuario de mysql
- private static String pass: La clave de usuario de mysql
- private static String driver: Nuestra librería mysql.
Y crearemos un objeto de la clase Connection del paquete java.sql para crear la conexión:
- private static Connection conexion: Nos devuelve la conexión.
Como veis, establezco la ruta del servidor, utilizo el usuario y el pass que viene por defecto en mysql, indico la posición del driver y creo el objeto Connection.
En el constructor levantaremos la conexión y la obtendremos, para ello seguiremos 2 sencillos pasos:
- Levantar el driver.
- Establecer la conexión.
Bien, con el método estático de la clase "class" levanto el driver que le paso por argumentos:
Con el objeto Conecction obtengo la conexión por medio del método estático getConnection de la clase DriverManager, pasándole por argumentos el servidor, el usuario y el pass:
- conexion=DriverManager.getConnection(servidor,user,pass);
Finalmente creamos un método para obtener el objeto de la clase
Connection con la conexión establecida:
Aquí os dejo la clase entera.
Bien, esta clase establece la conexión, ahora vamos a crear otra clase que se encargue de:
- Insertar valores
- Seleccionar valores
- Borrar valores
- Modificar valores
Nuestra clase tendrá 5 atributos:
- Un objeto de la clase escaner para leer desde teclado.
- Un objeto Connection para obtener la conexión a la base de datos.
- Un objeto tipo String para el nombre.
- Un objeto de tipo String para el departamento.
- Una variable de tipo int para las opciones del menú.
Bueno, ahora crearemos una sentencia condicional
switch, dentro de un bucle
do/while, para que vaya dándonos las opciones que queramos realizar hasta salir de la aplicación, y todo esto, dentro del método
MAIN:
Bueno, aquí podéis ver las opciones que tendrá nuestro menú:
- Insertar
- Modificar
- Eliminar
- Mostrar
- Salir
En el blucle do/while
establecemos que no se saldrá del menú hasta que la opción 5 sea
elegida. Ahora vamos a ir explicando los métodos realizados para
completar todas las funciones del menú:
INSERTAR:
Por pasos:
- Cargamos nuestra conexión.
- Pasamos al objeto Connection de esta clase la conexión de la clase "Conexion" por medio de nuestro método getConnection():
- Connection con=conexion.getConnection();
- Creamos un objeto de la clase Statement, la cual será la encargada de procesar la sentencia sql que le pasemos e interactuar con nuestra base de datos.
- Pedimos los datos por pantalla y por medio del objeto teclado de la clase Scanner,
leemos los datos que deseemos agregar. Una cosa antes de continuar, es
que, aunque mi tabla consta de 3 campos, yo tengo establecido el primero
(ID) como primary key, y he establecido que se auto-incremente, por lo tanto no tengo que introducirselo.
- Una vez introducido los datos, creamos la sentencia sql para insertarlos en nuestra base de datos.
- String sql="insert into empleados(nombre,departamento) values ('"+nombre+"','+departamento+"')";
- Hay que darse cuenta que los "values" que le pasamos han de estar entre comillas simples ''.
- Establecemos la comunicación entre nuestra aplicación java y la base de datos:
- st=con.createStatement();
- Le indicamos que ejecute la actualización de la tabla y le pasamos por argumentos nuestra sentencia sql:
- Cerramos las conexiones, en orden inverso a su apertura:
Con esto ya podremos insertar filas en nuestra base de datos.
Modificar:
Por pasos:
- Cargamos nuestra conexión.
- Pasamos al objeto Connection de esta clase la conexión de la clase "Conexion" por medio de nuestro método getConnection():
- Connection con=conexion.getConnection();
- Creamos un objeto de la clase Statement, la cual será la encargada de procesar la sentencia sql que le pasemos e interactuar con nuestra base de datos.
- Pedimos por teclado el número de ID del registro a modificar y se lo
asignamos a una variable tipo int llamada "n", posteriormente volvemos a
pedir el nombre y el departamento para modificarlos.
- Creamos nuestra sentencia sql:
- String sql="update empleados set nombre='"+nombre+"', departamento='"+departamento+"' where id="+n;
- Establecemos la comunicación entre nuestra aplicación java y la base de datos:
- st=con.createStatement();
- Le indicamos que ejecute la actualización de la tabla y le pasamos por argumentos nuestra sentencia sql:
- Cerramos las conexiones, en orden inverso a su apertura:
Esta vez le he puesto una sentencia "if" para que me avise de si se modifico con éxito o no. Con esto podremos modificar nuestros registros.
Eliminar:
Lo mismo que anteriormente:
- Cargamos nuestra conexión.
- Pasamos al objeto Connection de esta clase la conexión de la clase "Conexion" por medio de nuestro método getConnection():
- Connection con=conexion.getConnection();
- Creamos un objeto de la clase Statement, la cual será la encargada de procesar la sentencia sql que le pasemos e interactuar con nuestra base de datos.
- Introducimos por teclado el registro a eliminar.
- Creamos nuestra sentencia sql:
- String sql="delete from empleados where id="+n;
- Establecemos la comunicación entre nuestra aplicación java y la base de datos:
- st=con.createStatement();
- Le indicamos que ejecute la actualización de la tabla y le pasamos por argumentos nuestra sentencia sql:
- Cerramos las conexiones, en orden inverso a su apertura:
Llegados a este punto, ya te deberías de dar cuenta de que lo único que cambio es la sentencia sql, el resto es un copy/paste, para que veas que no es tan complicado como parece.
Mostrar:
Esta varía un poco con respecto a las otras:
- Cargamos nuestra conexión.
- Pasamos al objeto Connection de esta clase la conexión de la clase "Conexion" por medio de nuestro método getConnection():
- Connection con=conexion.getConnection();
- Creamos un objeto de la clase Statement, la cual será la encargada de procesar la sentencia sql que le pasemos e interactuar con nuestra base de datos.
- Creamos un objeto de la clase ResultSet que será la encargada de devolvernos los resultados de los registros:
- Creamos nuestra sentencia sql:
- String sql="select * from empleados";
- Establecemos la comunicación entre nuestra aplicación java y la base de datos:
- st=con.createStatement();
- Le pasamos al objeto de ResultSet el resultado de ejecutar la sentencia sql:
- rs=st.executeQuery(sql);
- En este caso no actualizamos la tabla (executeUpdate()), sino que realizamos una consulta (executeQuery());
- Por medio de un bucle while vamos recorriendo valores mientras existan (rs.next()) y por medio de los métodos getInt y getString obtenemos los valores de las diferentes columnas, tened en cuenta de que le tenemos que pasar el número de columna:
- while (rs.next){
- System.out.println("ID:"+rs.getInt(1));
- System.out.println("Nombre: "+rs.getString(2));
- System.out.println("Departamento: "+rs.getString(3));
- System.out.println("**************************");
- }
- Cerramos las conexiones, en orden inverso a su apertura:
- rs.close();
- st.close();
- con.close();