public static void main(String[] args) {
	Connection conn = null;
	Statement stmt = null;
	try {
	    // STEP 2: Register JDBC driver
	    Class.forName("com.mysql.jdbc.Driver");

	    // STEP 3: Open a connection
	    System.out.println("Connecting to database...");
	    DatabaseUtility.prepareDatabase();
	    conn = DatabaseUtility.getConnection();

	    // STEP 4: Set auto commit as false.
	    conn.setAutoCommit(false);

	    // STEP 5: Execute a query to delete statment with
	    // required arguments for RS example.
	    System.out.println("Creating statement...");
	    stmt = conn.createStatement();

	    // STEP 6: Now list all the available records.
	    String sql = "SELECT id, first, last, age FROM Employees";
	    ResultSet rs = stmt.executeQuery(sql);
	    System.out.println("List result set for reference....");
	    printRs(rs);

	    // STEP 7: delete rows having ID grater than 104
	    // But save point before doing so.
	    Savepoint savepoint1 = conn.setSavepoint("ROWS_DELETED_1");
	    System.out.println("Deleting row....");
	    String SQL = "DELETE FROM Employees " + "WHERE ID = 110";
	    stmt.executeUpdate(SQL);
	    // oops... we deleted too wrong employees!
	    // STEP 8: Rollback the changes afetr save point 2.
	    conn.rollback(savepoint1);

	    // STEP 9: delete rows having ID grater than 104
	    // But save point before doing so.
	    // Savepoint savepoint2 = conn.setSavepoint("ROWS_DELETED_2");
	    System.out.println("Deleting row....");
	    SQL = "DELETE FROM Employees " + "WHERE ID = 95";
	    stmt.executeUpdate(SQL);

	    // STEP 10: Now list all the available records.
	    sql = "SELECT id, first, last, age FROM Employees";
	    rs = stmt.executeQuery(sql);
	    System.out.println("List result set for reference....");
	    printRs(rs);

	    // STEP 10: Clean-up environment
	    rs.close();
	    stmt.close();
	    conn.close();
	} catch (SQLException se) {
	    // Handle errors for JDBC
	    se.printStackTrace();
	    // If there is an error then rollback the changes.
	    System.out.println("Rolling back data here....");
	    try {
		if (conn != null)
		    conn.rollback();
	    } catch (SQLException se2) {
		se2.printStackTrace();
	    }// end try

	} catch (Exception e) {
	    // Handle errors for Class.forName
	    e.printStackTrace();
	} finally {
	    // finally block used to close resources
	    try {
		if (stmt != null)
		    stmt.close();
	    } catch (SQLException se2) {
	    }// nothing we can do
	    try {
		if (conn != null)
		    conn.close();
	    } catch (SQLException se) {
		se.printStackTrace();
	    }// end finally try
	}// end try
	System.out.println("Goodbye!");
    }// end main