Commit 1e72a1d3 by Patryk Czarnik

przykłady UPDATE

parent 3c30ac9e
package zajecia;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class Update1 {
public static void main(String[] args) {
final String url = "jdbc:postgresql://localhost:5432/hr";
final String updateSql = "UPDATE employees SET salary = salary + ? WHERE job_id = ?";
try(Connection c = DriverManager.getConnection(url, "alx", "abc123");
PreparedStatement stmt = c.prepareStatement(updateSql)) {
String szukanyJob = JOptionPane.showInputDialog("Podaj kod stanowiska", "IT_PROG");
BigDecimal zmiana = new BigDecimal(JOptionPane.showInputDialog("Podaj kwotę zmiany", "100.00"));
stmt.setString(2, szukanyJob);
stmt.setBigDecimal(1, zmiana);
int count = stmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Zmieniono " + count + " rekordów");
} catch(SQLException e) {
e.printStackTrace();
}
}
}
package zajecia;
import static javax.swing.JOptionPane.*;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Update2 {
public static void main(String[] args) {
final String url = "jdbc:postgresql://localhost:5432/hr";
final String updateSql = "UPDATE employees SET salary = salary + ? WHERE job_id = ?";
try(Connection c = DriverManager.getConnection(url, "alx", "abc123");
PreparedStatement stmt = c.prepareStatement(updateSql)) {
c.setAutoCommit(false);
String szukanyJob = showInputDialog("Podaj kod stanowiska", "IT_PROG");
BigDecimal zmiana = new BigDecimal(showInputDialog("Podaj kwotę zmiany", "100.00"));
stmt.setString(2, szukanyJob);
stmt.setBigDecimal(1, zmiana);
int count = stmt.executeUpdate();
showMessageDialog(null, "Zmieniono " + count + " rekordów");
if(showConfirmDialog(null, "Czy zatwierdzić zmiany?", "Zatwierdź", YES_NO_OPTION) == YES_OPTION) {
c.commit();
} else {
c.rollback(); // tego można by nie pisać
}
} catch(SQLException e) {
e.printStackTrace();
}
}
}
package zajecia;
import javax.swing.*;
import java.sql.*;
public class Update3 {
public static void main(String[] args) {
final String updateSql = "UPDATE employees SET salary = salary + ? WHERE job_id = ?";
final String avgSql = "SELECT avg(salary) FROM employees WHERE job_id = ?";
try(Connection c = DriverManager.getConnection("jdbc:postgresql://localhost/hr", "alx", "abc123")) {
PreparedStatement updateStmt = c.prepareStatement(updateSql);
PreparedStatement avgStmt = c.prepareStatement(avgSql);
c.setAutoCommit(false);
// weszliśmy w tryb transakcji, tzn. zmiany dokonywane w tej sesji nie będą zapisane w sposób trwały dopóki nie wykonamy polecenia COMMIT
// zerwanie sesji bez zrobienia COMMIT powoduje utratę zmian
String szukanyJob = JOptionPane.showInputDialog("Podaj kod stanowiska", "IT_PROG");
avgStmt.setString(1, szukanyJob);
try(ResultSet rs = avgStmt.executeQuery()) {
if(rs.next()) {
double avg = rs.getDouble(1);
JOptionPane.showMessageDialog(null, "Średnia pensja wynosi " + avg);
}
}
int zmiana = Integer.parseInt(JOptionPane.showInputDialog("Podaj zmianę pensji", "1000"));
updateStmt.setInt(1, zmiana);
updateStmt.setString(2, szukanyJob);
int wynik = updateStmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Zmieniono " + wynik + " rekordów.");
try(ResultSet rs = avgStmt.executeQuery()) {
if(rs.next()) {
double avg = rs.getDouble(1);
JOptionPane.showMessageDialog(null, "Średnia pensja wynosi teraz " + avg);
}
}
int wybor = JOptionPane.showConfirmDialog(null, "Czy zapisać zmiany?");
switch(wybor) {
case JOptionPane.YES_OPTION -> c.commit();
case JOptionPane.NO_OPTION -> c.rollback();
case JOptionPane.CANCEL_OPTION -> {return;} // wcześniej przerywa program; połączenie zostanie zamknięte bez commita
}
try(ResultSet rs = avgStmt.executeQuery()) {
if(rs.next()) {
double avg = rs.getDouble(1);
JOptionPane.showMessageDialog(null, "Średnia pensja wynosi teraz " + avg);
}
}
} 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