- 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.
- 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:
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 enmysql, 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:
- Class.forName(driver);
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);
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, 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.
- conexion=new Conexion();
- 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.
- Statement st;
- Pedimos los datos por pantalla y por medio del objeto teclado de la claseScanner, 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:
- st.executeUpdate(sql);
- Cerramos las conexiones, en orden inverso a su apertura:
- st.close();
- con.close();
Con esto ya podremos insertar filas en nuestra base de datos.
Modificar:
Por pasos:
- Cargamos nuestra conexión.
- conexion=new Conexion();
- 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.
- Statement st;
- 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:
- st.executeUpdate(sql);
- Cerramos las conexiones, en orden inverso a su apertura:
- st.close();
- con.close();
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.
- conexion=new Conexion();
- 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.
- Statement st;
- 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:
- st.executeUpdate(sql);
- Cerramos las conexiones, en orden inverso a su apertura:
- st.close();
- con.close();
Llegados a este punto, ya te deberías de dar cuenta de que lo único que cambio es la sentenciasql, 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.
- conexion=new Conexion();
- 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.
- Statement st;
- Creamos un objeto de la clase ResultSet que será la encargada de devolvernos los resultados de los registros:
- ResultSet rs;
- 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 sentenciasql:
- 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();
No hay comentarios:
Publicar un comentario