1.0

Table Of Contents
Forward-Only Updatable Result Sets
A forward-only updatable result set maintains a cursor that can move in only one direction (forward), and also
update rows.
To create a forward only updatable result set, you create a statement with concurrency mode
ResultSet.CONCUR_UPDATABLE and type ResultSet.TYPE_FORWARD_ONLY.
Note: The default type is ResultSet.TYPE_FORWARD_ONLY.
Example of Forward-Only Updatable Result Set on page 163
Visibility of Changes on page 163
Conicting Operations on page 164
Example of Forward-Only Updatable Result Set
Example of using ResultSet.updateXXX() + ResultSet.updateRow() to update a row:
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
ResultSet uprs = stmt.executeQuery(
"SELECT FIRSTNAME, LASTNAME, WORKDEPT, BONUS " +
"FROM EMPLOYEE");
while (uprs.next()) {
int newBonus = uprs.getInt("BONUS") + 100;
uprs.updateInt("BONUS", newBonus);
uprs.updateRow();
}
Example of using ResultSet.deleteRow() to delete a row:
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
ResultSet uprs = stmt.executeQuery(
"SELECT FIRSTNAME, LASTNAME, WORKDEPT, BONUS " +
"FROM EMPLOYEE");
while (uprs.next()) {
if (uprs.getInt("WORKDEPT")==300) {
uprs.deleteRow();
}
}
Visibility of Changes
After an update or delete is made on a forward-only result set, the result set's cursor is no longer on the row
just updated or deleted, but moves immediately before the next row in the result set. (It is necessary to move
to the next row before any further row operations are allowed.) This means that changes made by
ResultSet.updateRow() and ResultSet.deleteRow() are never visible.
If a row has been inserted (for example, using ResultSet.insertRow()), then it may be visible in a
forward-only result set.
163
Using Result Sets and Cursors