Commit d806086a by Patryk Czarnik

try-with-resources i prosty update

parent ad5247d1
Ten projekt prezentuje technologię JDBC - Java Database Connectivity.
To jest podstawowy sposób korzystania z relacyjnych ("SQL-owych") baz danych w Javie.
Zalety:
+ ujednolicony dostęp do różnych baz danych (trzeba pisać kody SQL pasujące do konkretnego rodzaju bazy, ale instrukcje Javy są jednakowe niezależnie czy to Oracle, czy MysSQL...)
+ mamy pełną kontrolę nad wykonywanych SQL-em i dostęp do bazy taki, jak go przewiduje standard SQL
Wady:
- obsługa większych baz danych (w sensie liczby tabel i kolumn) jest pracochłonna:
* to my musimy napisać wszystkie polecenia SQL
* odczyt i zapis każdego pola musi być zapisany wprost w kodzie jako oddzielna instrukcja.
package zajecia.postgresql;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Odczyt2 {
// Tutaj używamy konstrukcji try-with-resources, dzięki czemu zasoby (Connection, Statement, ResultSet) zostaną zamknięte bez potrzeby pisania close i także w przypadku wyjątku
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/hr";
try(Connection c = DriverManager.getConnection(url, "kurs", "abc123");
PreparedStatement stmt = c.prepareStatement("SELECT * FROM employees ORDER BY employee_id");
ResultSet rs = stmt.executeQuery()) {
while(rs.next()) {
int id = rs.getInt(1);
String firstName = rs.getString(2);
String lastName = rs.getString(3);
String job = rs.getString("job_id");
BigDecimal salary = rs.getBigDecimal("salary");
System.out.printf("| %3d | %-15s | %-15s | %-10s | %8.2f |%n",
id, firstName, lastName, job, salary);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package zajecia.postgresql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class Podwyzka1 {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost/hr";
try(Connection c = DriverManager.getConnection(url, "kurs", "abc123")) {
String job = JOptionPane.showInputDialog("Podaj kod stanowiska");
int zmiana = Integer.parseInt(JOptionPane.showInputDialog("Podaj kwotę podwyżki"));
String sql = "UPDATE employees SET salary = salary + ? WHERE job_id = ?" ;
try(PreparedStatement stmt = c.prepareStatement(sql)) {
stmt.setInt(1, zmiana);
stmt.setString(2, job);
int ile = stmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Zmodyfikowano " + ile + " rekordów");
}
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, e, "Błąd", JOptionPane.ERROR_MESSAGE);
}
}
}
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