1. JDBC
  2. Instalar base de datos en local
  3. Conexión
  4. Operaciones con tablas
  5. Inserción
  6. Eliminar
  7. Modificar
  8. Consulta
  9. Bean
  10. Prepared Statement

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 I

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 insertar registro II

Crear una única clase java que contiene un método "public static void main" que realiza una inserción en la base de datos cuando se llama a un método insertaRegistro("dni3", "nombre3", 3) desde una instancia de la propia clase.

El public static void main quedaría así:

public class Mantenimiento 
	//Aquí viene el código que falta
	public static void main(String[] args) {		
		Mantenimiento mantenimiento = new Mantenimiento();
		mantenimiento.insertaRegistro("dni3", "nombre", 8);
	}
}

Ejercicio insertar registro III

Crear una única clase java que contiene un método "public static void main" que realiza una inserción en la base de datos cuando se llama a un método insertaRegistro("dni4", "nombre4", 4) desde una instancia de la propia clase.
Dicho método llamará en su primera línea al método getConnection(), que le devolverá una conexión a la base de datos.

El public static void main quedaría así:


public class Mantenimiento{
	public void insertar(String a, String b, int c){
		Connection conn = getConnection();
		//Aquí viene el código que falta
		conn.close();
		//Aquí viene el código que falta
	}
	public Connection getConnection(){
		//Aquí viene el código que falta
	}
	public static void main(String[] args) {		
		Mantenimiento mantenimiento = new Mantenimiento();
		mantenimiento.insertar("dni4", "nombre1", 8);
	}
}

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 I

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.

ArrayList<String> personas = new ArrayList<String>();

Statement statement = databaseConnection.createStatement();
ResultSet personasRS = statement.executeQuery("SELECT * FROM persona");
while (personasRS.next()){
	personas.add(personasRS.getString("nombre"));
}
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 mail¡Contacta conmigo!
contacta conmigoPablo Monteserín

¡Hola! ¿En qué puedo ayudarte?