import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
public class MainClass {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
try {
Class.forName("org.hsqldb.jdbcDriver").newInstance();
String url = "jdbc:hsqldb:hsqldb\\demoDatabase";
connection = DriverManager.getConnection(url, "username", "password");
connection.setAutoCommit(false);
statement = connection.createStatement();
String update1 = "UPDATE employees SET email = 'a@b.com' WHERE email = 'a@a.com'";
statement.executeUpdate(update1);
Savepoint savepoint1 = connection.setSavepoint("savepoint1");
String update2 = "UPDATE employees SET email = 'b@b.com' WHERE email = 'b@c.com'";
statement.executeUpdate(update2);
Savepoint savepoint2 = connection.setSavepoint("savepoint2");
String update3 = "UPDATE employees SET email = 'c@c.com' WHERE email = 'c@d.com'";
statement.executeUpdate(update3);
Savepoint savepoint3 = connection.setSavepoint("savepoint3");
String update4 = "UPDATE employees SET email = 'd@d.com' WHERE email = 'd@e.com'";
statement.executeUpdate(update4);
Savepoint savepoint4 = connection.setSavepoint("savepoint4");
String update5 = "UPDATE employees SET email = 'e@e.com' WHERE email = 'e@f.com'";
statement.executeUpdate(update5);
Savepoint savepoint5 = connection.setSavepoint("savepoint5");
connection.rollback(savepoint3);
connection.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
} // nothing we can do
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
} // nothing we can do
}
}
}
}