Extended updatable result set example
Connection conn = DriverManager.getConnection("jdbc:derby:sample");
conn.setAutoCommit(false);
// Create the statement with concurrency mode CONCUR_UPDATABLE
// to allow result sets to be updatable
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE,
ResultSet.CLOSE_CURSORS_AT_COMMIT);
// Updatable statements have some requirements
// for example, select must be on a single table
ResultSet uprs = stmt.executeQuery(
"SELECT FIRSTNME, LASTNAME, WORKDEPT, BONUS " +
"FROM EMPLOYEE FOR UPDATE of BONUS"); // Only bonus can be updated
String theDept="E21";
while (uprs.next()) {
String firstnme = uprs.getString("FIRSTNME");
String lastName = uprs.getString("LASTNAME");
String workDept = uprs.getString("WORKDEPT");
BigDecimal bonus = uprs.getBigDecimal("BONUS");
if (workDept.equals(theDept)) {
// if the current row meets our criteria,
// update the updatable column in the row
uprs.updateBigDecimal("BONUS", bonus.add(BigDecimal.valueOf(250L)));
uprs.updateRow();
System.out.println("Updating bonus for employee:" +
firstnme + lastName);
}
}
conn.commit(); // commit the transaction
// close object
uprs.close();
stmt.close();
// Close connection if the application does not need it any more
conn.close();