/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package aa;

import Practica.Ejercicio5.Examen.*;
import Practica.Ejercicio1.Examen.*;
import java.sql.*;

/**
 *
 * @author mario
 */
public class Ejercicio5 {

    /*
    Crea un programa que muestre el nombre y la fecha de contratación de todos los empleados, 
    pero en orden inverso al que se obtienen normalmente.
    
    No se debe usar ORDER BY; se debe recorrer el ResultSet desde el final hacia el principio usando el método previous()
    */
    public static void main(String[] args) {
        //Conexión a la base de datos.
        //Tenemos que crear un OBJETO que nos sirva de intermediario entre la BBDD y JAVA.

        try {

            String url = "jdbc:mysql://localhost/empresa";
            String user = "root";
            String password = "";

            Connection con = DriverManager.getConnection(url, user, password);

            //Consulta que queremos obtener: //Los datos de una oficina
            String sql = "SELECT * FROM empleados";

            PreparedStatement pst = con.prepareStatement(sql, 
                    ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY
            );
            //ResultSet.TYPE_SCROLL_INSENSITIVE → Que permita scrolleo de arriba a abajo y viceversa
            //ResultSet.CONCUR_READ_ONLY → La concurrencia de los datos son de solo lectura.

            //TO-DO: Diferencia entre PREPAREDSTATEMNT y STATEMENT
            //ResulSet ¿?
            ResultSet rs = pst.executeQuery();
            
            rs.afterLast(); //Empezamos por el final.

            while (rs.previous()) { //Vamos desandando los pasos dados.
                
                //Recolección de variables por cada fila
                String nombre = rs.getString("nombre");
                java.sql.Date contrato = rs.getDate("contrato");

                
                //Impresión de cada una de las filas
                System.out.println("Nombre: "+nombre);
                System.out.println("Contrato: "+contrato);
                
                System.out.println("\n-------------\n");
            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        }

    }

}
