package ar.com.javacuriosities.jdbc; import static ar.com.javacuriosities.jdbc.util.Constants.PASSWORD; import static ar.com.javacuriosities.jdbc.util.Constants.URL; import static ar.com.javacuriosities.jdbc.util.Constants.USER; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /* * Vamos a usar un CRUD (Create-Retrieval-Update-Delete) para ver las distintas consultas que podemos ejecutar * */ public class Lesson02CRUD { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); insert(); select(); update(); delete(); } catch (Exception e) { // Log and Handle exception e.printStackTrace(); } } private static void select() throws SQLException { try (Connection connection = DriverManager.getConnection(URL, USER, PASSWORD)) { String sql = "SELECT * FROM alumnos"; // Utilizamos un Statement para ejecutar nuestra consulta Statement statement = connection.createStatement(); try (ResultSet rs = statement.executeQuery(sql)) { while (rs.next()) { // Podemos acceder por nombre o por índice, empezando desde 1 String name = rs.getString("nombre"); double average = rs.getDouble("promedio"); System.out.println("Name: " + name); System.out.println("Average: " + average); } } } } private static void insert() throws SQLException { try (Connection connection = DriverManager.getConnection(URL, USER, PASSWORD)) { Statement statement = connection.createStatement(); String sql = "INSERT INTO alumnos (nombre, apellido, dni, fecha_nacimiento) VALUES ('" + "Name" + "', '" + "LastName" + "', '" + "12345678" + "', '1985-06-05')"; /* * Cuando ejecutamos el query podemos pasar el segundo parámetro como "Statement.RETURN_GENERATED_KEYS" * para obtener el ID auto-generado, siempre y cuando el motor soporte esto, podemos verificar esto * por medio de DatabaseMetaData, si no pasamos el segundo parámetro no podemos obtener * el ID auto-generado */ int rowsAffected = statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); ResultSet generatedKeys = statement.getGeneratedKeys(); System.out.println(rowsAffected + " Row Inserted"); while (generatedKeys.next()) { System.out.println("Last Id: " + generatedKeys.getInt(1)); } } } private static void update() throws SQLException { try (Connection connection = DriverManager.getConnection(URL, USER, PASSWORD)) { Statement statement = connection.createStatement(); int maxId = getMaxId(statement); String sql = "UPDATE alumnos SET nombre = '" + "NewName" + "', apellido = '" + "NewLastName" + "' WHERE id_alumno = " + maxId; int rowsAffected = statement.executeUpdate(sql); System.out.println(rowsAffected + " Row Updated"); } } private static void delete() throws SQLException { try (Connection connection = DriverManager.getConnection(URL, USER, PASSWORD)) { Statement statement = connection.createStatement(); int maxId = getMaxId(statement); String sql = "DELETE FROM alumnos WHERE id_alumno = " + maxId; int rowsAffected = statement.executeUpdate(sql); System.out.println(rowsAffected + " Row Deleted"); } } private static int getMaxId(Statement statement) throws SQLException { int maxId = -1; ResultSet rs = statement.executeQuery("SELECT MAX(id_alumno) AS max_id FROM alumnos"); while(rs.next()) { maxId = rs.getInt("max_id"); } return maxId; } }