package com.trifulcas.datos;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class AccesoSakila {
public static void main(String[] args) {
try {
// Lo primero de todo crear una conexión CTRL+MAY+O -> importación automática de los paquetes que falten
// Esta línea nos 'registra' el conector mysql dentro de Java
Class.forName("com.mysql.cj.jdbc.Driver");
// Aquí nos creamos la conexión con una cadena de conexión
// Lo primero es el tipo de conector: jdbc:mysql
// Después la url del servidor SGBD //localhost:3306/
// Después opcionalmente pero está bien ponerlo la base de datos /sakila
// Por último usuario y contraseña root ''
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "root", "");
System.out.println("Conexión correcta");
// Con esta conexión yo puedo lanzar comandos a la base de datos.
// Los comandos son SQL y pueden ser de dos tipos:
// Lectura de datos (SELECT)
// Modificación de datos (INSERT,UPDATE,DELETE)
// Crear una sentencia Statement
// Puedo lanzar dos tipos de ejecución:
// executeQuery: consulta, me devolverá datos
// executeUpdate: modificación, no me devuelve datos
Statement stmt = con.createStatement();
// Crearme una sentencia sql para obtener unos datos
String sql="select * from actor where first_name like 'b%'";
// Guardo los resultados en un ResultSet: Una clase que nos permite ir leyendo los
// Registros que nos ha devuelto nuestra consulta
ResultSet rs = stmt.executeQuery(sql);
// Cada vez que yo quiero un registro llamo a next()
// Cuando no haya registros devuelve false y sale del while
while (rs.next()) {
// Una vez he 'cargado' un registro puedo acceder a los campos de dos maneras
// Por el índice de la columna (empezando por el 1)
System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3));
int id=rs.getInt(1);
String first_name=rs.getString(2);
String last_name=rs.getString(3);
System.out.println(id+"-"+first_name+" - "+last_name);
// Por el nombre de la columna
// En los dos casos como Java es tipado tengo que usar el tipo correspondiente
// getInt, getString,...
id=rs.getInt("actor_id");
first_name=rs.getString("first_name");
last_name=rs.getString("last_name");
System.out.println(id+" | "+first_name+" | "+last_name);
}
// Para modificar datos es más sencillo puesto que no tenemos resultados
// Plantamos nuestra sentencia sql
sql="insert into actor (first_name,last_name) values ('aa','bb')";
// La ejecutamos con executeUpdate que no devuelve un ResultSet
// Devuelve el número de filas afectadas
int res=stmt.executeUpdate(sql);
System.out.println(res);
// La sentencia sql pueder un update o un delete
sql="update actor set last_name='bbb' where first_name ='aa'";
res=stmt.executeUpdate(sql);
System.out.println(res);
} catch (Exception ex) {
System.out.println(ex);
}
}
}