package bazy.podstawy;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Objects;

import javax.swing.JOptionPane;

public class Parametry3 {

    /* Rozwiązanie 3:
     * Za pomocą WHERE filtrujemy rekordy po stronie bazy danych, co poprawia wydajność.
     * Tutaj prawidłowo używamy parametrów JDBC zapisywanych za pomocą ?
	 */
	public static void main(String[] args) {
		String szukany_job = JOptionPane.showInputDialog("Podaj kod stanowiska");
		try(Connection c = DriverManager.getConnection("jdbc:postgresql://localhost/hr", "kurs", "abc123")) {
			try(PreparedStatement stmt = c.prepareStatement("SELECT * FROM employees WHERE job_id = ?")) {
				stmt.setString(1, szukany_job);
				System.out.println("Zaraz wykonam: " + stmt);
				try(ResultSet rs = stmt.executeQuery()) {
					while (rs.next()) {
						int id = rs.getInt(1);
						String imie = rs.getString("first_name");
						String nazwisko = rs.getString("last_name");
						String job = rs.getString("job_id");
						BigDecimal pensja = rs.getBigDecimal("salary");
						java.sql.Date data = rs.getDate("hire_date");
						System.out.printf("%d. %s %s (%s) zatr. %s zarabia %s\n", id, imie, nazwisko, job, data, pensja);
					}
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}
