Simple non-updatable ResultSets

Here is an excerpt from a sample JDBC application that generates a ResultSet with a simple SELECT statement and then processes the rows.

Connection conn = DriverManager.getConnection(
Statement s = conn.createStatement();
s.execute("set schema 'SAMP'");
//note that autocommit is on--it is on by default in JDBC
ResultSet rs = s.executeQuery(
    "SELECT empno, firstnme, lastname, salary, bonus, comm "
				 + "FROM samp.employee");
/** a standard JDBC ResultSet. It maintains a 
  *  cursor that points to the current row of data. The cursor 
  *  moves down one row each time the method next() is called.
  *  You can scroll one way only--forward--with the next()
  *  method. When auto-commit is on, after you reach the 
  *  last row the statement is considered completed
  *  and the transaction is committed.
System.out.println( "last name" + "," + "first name" + ": earnings");
/* here we are scrolling through the result set 
with the next() method.*/
while ( {
    // processing the rows
    String firstnme = rs.getString("FIRSTNME");
    String lastName = rs.getString("LASTNAME");
    BigDecimal salary = rs.getBigDecimal("SALARY");
    BigDecimal bonus = rs.getBigDecimal("BONUS");
    BigDecimal comm = rs.getBigDecimal("COMM"); 
    System.out.println( lastName + ", " + firstnme + ": " 
                       + (salary.add(bonus.add(comm))));
// once we've iterated through the last row,
// the transaction commits automatically and releases
//shared locks
Related concepts
Updatable cursors
ResultSets and auto-commit
Scrolling insensitive ResultSets
Related reference
Holdable cursors