package javacodebook.jdbc.accounter;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class AffectedRows {

    public static void main(String[] args) {
        try {
            Class.forName("org.postgresql.Driver");
            Connection con =
                DriverManager.getConnection(
                    "jdbc:postgresql:test",
                    "postgres",
                    "postgres");

            Statement statement = con.createStatement();

            // Zuerst einmal ein einfaches Update
            int count =
                statement.executeUpdate(
                    "UPDATE employees SET salary=salary+1000");

            System.out.println(
                "Successfully updated " + count + " employees");
            System.out.println(
                "getUpdateCount() == "
                    + statement.getUpdateCount());

            // Dann per addBatch eine Reihe von Updates
            statement.addBatch(
                "UPDATE employees SET salary=salary-1000");
            statement.addBatch(
                "UPDATE employees SET salary=salary+500 "
                    + "WHERE firstname='Rangar'");
            statement.addBatch(
                "UPDATE employees SET salary=salary+200 "
                    + "WHERE firstname!='Rangar'");

            // Hier gibt es dann einen Array von int zurück
            int[] counts = statement.executeBatch();

            for (int i = 0; i < counts.length; i++) {
                System.out.println(
                    "Command no. "
                        + i
                        + " in batch affected "
                        + counts[i]
                        + " rows");
            }

            // getUpdateCount ist dann etwas irreführend
            System.out.println(
                "getUpdateCount() == "
                    + statement.getUpdateCount());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
