Commit 52665d25 by Patryk Czarnik

Parametry zapytań

parent f72a71a6
package p21_jdbc.bazowe;
import javax.swing.*;
import java.sql.*;
import java.util.Objects;
public class C_OdczytajWybranych_v1 {
/* Niech program wypisuje dane tylko tych pracowników, którzy mają podane job_id
W tej wersji aplikacja pobiera dane całęj tabeli, a dopiero Java dokonuje filtrowania.
- Ta wersja ma niską wydajność.
*/
public static void main(String[] args) {
String szukanyJob = JOptionPane.showInputDialog("Podaj kod stanowiska:", "IT_PROG");
String url = "jdbc:postgresql://vps-2bc225bd.vps.ovh.net/hr";
try(Connection c = DriverManager.getConnection(url, "alx", "abc123vps")) {
System.out.println("Połączenie: " + c);
try(PreparedStatement stmt = c.prepareStatement("SELECT * FROM employees")) {
try(ResultSet rs = stmt.executeQuery()) {
System.out.println("ResultSet: " + rs);
while(rs.next()) {
String jobId = rs.getString("job_id");
if(Objects.equals(jobId, szukanyJob)) {
System.out.printf("Pracownik nr %d: %s %s (%s) zarabia %s%n",
rs.getInt("employee_id"),
rs.getString("first_name"),
rs.getString("last_name"),
jobId,
rs.getBigDecimal("salary")
);
}
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
package p21_jdbc.bazowe;
import javax.swing.*;
import java.sql.*;
import java.util.Objects;
public class C_OdczytajWybranych_v2 {
/* Niech program wypisuje dane tylko tych pracowników, którzy mają podane job_id
W tej wersji program wkleja do zapytania SQL dane wprowadzone przez użytkownika → zagrożenie SQL Injection.
'; update employees set salary = 1; select '
'; drop table employees cascade; select 'x
*/
public static void main(String[] args) {
String szukanyJob = JOptionPane.showInputDialog("Podaj kod stanowiska:", "IT_PROG");
String url = "jdbc:postgresql://vps-2bc225bd.vps.ovh.net/hr";
try(Connection c = DriverManager.getConnection(url, "alx", "abc123vps")) {
System.out.println("Połączenie: " + c);
try(PreparedStatement stmt = c.prepareStatement("SELECT * FROM employees WHERE job_id = '" + szukanyJob + "'")) {
System.out.println(stmt);
try(ResultSet rs = stmt.executeQuery()) {
System.out.println("ResultSet: " + rs);
while(rs.next()) {
System.out.printf("Pracownik nr %d: %s %s (%s) zarabia %s%n",
rs.getInt("employee_id"),
rs.getString("first_name"),
rs.getString("last_name"),
rs.getString("job_id"),
rs.getBigDecimal("salary")
);
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
package p21_jdbc.bazowe;
import javax.swing.*;
import java.sql.*;
public class C_OdczytajWybranych_v3 {
/* Niech program wypisuje dane tylko tych pracowników, którzy mają podane job_id
*/
public static void main(String[] args) {
String szukanyJob = JOptionPane.showInputDialog("Podaj kod stanowiska:", "IT_PROG");
String url = "jdbc:postgresql://vps-2bc225bd.vps.ovh.net/hr";
try(Connection c = DriverManager.getConnection(url, "alx", "abc123vps")) {
System.out.println("Połączenie: " + c);
try(PreparedStatement stmt = c.prepareStatement("SELECT * FROM employees WHERE job_id = ?")) {
stmt.setString(1, szukanyJob);
System.out.println(stmt);
try(ResultSet rs = stmt.executeQuery()) {
System.out.println("ResultSet: " + rs);
while(rs.next()) {
System.out.printf("Pracownik nr %d: %s %s (%s) zarabia %s%n",
rs.getInt("employee_id"),
rs.getString("first_name"),
rs.getString("last_name"),
rs.getString("job_id"),
rs.getBigDecimal("salary")
);
}
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment