JSE con JDBC

JDBC (Java DataBase Conectivity)

Conjunto de drivers y librerías que permiten conectar la tecnología Java con una base de datos.

Conexión

Class.forName("com.mysql.jdbc.Driver");
// Define the data source for the driver
String sourceURL = "jdbc:mysql://localhost/personas";
// Create a connection through the DriverManager
Connection databaseConnection = DriverManager.getConnection(sourceURL, "root", "pp");
databaseConnection.close();

Operaciones SQL

Crear una tabla

Introducir las siguientes 3 líneas en el código anterior para que se cree una tabla en la base de datos seleccionada:

Statement statement = databaseConnection.createStatement();
statement.executeUpdate("CREATE TABLE nueva_tabla (dni VARCHAR(9) NOT NULL PRIMARY KEY, nombre VARCHAR(30))");
statement.close();

Borrar tabla

Teniendo en cuenta la siguiente sintaxis sql para borrar una tabla, utilizarla para borrar la tabla anterior:

DROP TABLE nueva_tabla;

Inserción

Consulta de inserción en SQL

Hay 2 formas:

  1. INSERT INTO table_name
    VALUES (value1,value2,value3,...);
  2. INSERT INTO table_name (column1,column2,column3,...)
    VALUES (value1,value2,value3,...);

Ejercicio insertar registro

Crear usando el gestor gráfico una tabla llamada "prueba" e insertar mediante la consola (usando la clase Scanner) un registro de tres campos (dni, nombre y edad).

Ejercicio eliminar registro

Añadir un método eliminarRegistro() que contiene el código necesario para eliminar una fila.

DELETE FROM persona WHERE dni='p'

Ejercicio modificar tabla

Añadir un método modificarRegistro() que contiene el código necesario para modificar una tabla.

El código sql sería parecido a este:

UPDATE persona SET nombre='juan', edad = 37 WHERE dni = 'u'

Consultar personas

Integrar el siguiente código en un nuevo .java para poder realizar una consulta en la base de datos.

List<Persona> personas = new ArrayList<Persona>();

Statement statement = databaseConnection.createStatement();
ResultSet personasRS = statement.executeQuery("SELECT * FROM persona");
while (personasRS.next()){
	Persona p = new Persona();
	p.setNombre(personasRS.getString("nombre"));
	personas.add(p);
}
chiste de una select con SQL

Bean

Generación automática de los getters y setters:
Btn derecho sobre el código → source → Generate Getters and Setters
Alt + shift + s → Generate Getters and Setters
public class Persona {
	private String dni;
	private String nombre;
	private int edad;
	public String getDni() {
		return dni;
	}
	public void setDni(String dni) {
		this.dni = dni;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public int getEdad() {
		return edad;
	}
	public void setEdad(int edad) {
		this.edad = edad;
	}
}

Ejercicio Almacenar en una collection de Beans

El ejercicio consta de cuatro clases java:

  • Una clase que será nuestro bean Persona
  • Una clase Conexion con un método estático getConnection() que me devolverá la conexión a la base de datos.
  • Una clase Servicio que contendrá el método consultarTodo() que me devolverá una colección de Beans.
  • Una clase llamada Main con el siguiente código:
    public static void main(String[] args) {
    	Servicio servicio = new Servicio();
    	Collection <Persona> collection = servicio.consultarTodo();
    	Iterator<Persona> it = collection.iterator();
    	while(it.hasNext()){
    		Persona persona = it.next();
    		System.out.println(persona.getNombre());
    	}
    }

Prepared Statement

Protege contra la inyección SQL. A partir de ahora, utilizaremos siempre preparedStatement.

PreparedStatement pstmt = null;
pstmt = databaseConnection.prepareStatement("INSERT INTO persona VALUES (?,?,?)");
pstmt.setString(1, "dni5");
pstmt.setString(2, "nombre1");
pstmt.setInt(3,9);
pstmt.execute();
pstmt.close();

Ejercicio

Insertar valores en la tabla usando preparedStatement.

Prepared Statement II

PreparedStatement pstmt = null;
pstmt = databaseConnection.prepareStatement("SELECT * FROM persona where nombre = ?");
pstmt.setString(1, "Pablo");
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
	System.out.println(rs.getString("direction"));
}
pstmt.close();

Ejercicio

Consultar un valor concreto de una tabla utilizando PreparedStatement.

icono de mandar un mailPreguntame lo que quieras!
Pablo Monteserín
contacta conmigoPablo Monteserín

El servicio de resolución de dudas técnicas es sólo para los usuarios premium. Si tienes cualquier otra duda, usa el formulario de contacto. ¡Gracias!