# Simple non-updatable result sets

This example is an excerpt from a sample JDBC application that generates a result set with a simple SELECT statement and then processes the rows.

    Connection conn = DriverManager.getConnection(
        "jdbc:derby:sample");
    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 (rs.next()) {
        // 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))));
    }
    rs.close();
    // once we've iterated through the last row,
    // the transaction commits automatically and releases
    //shared locks
    s.close();

Parent topic: Result set and cursor mechanisms
Related concepts
Updatable result sets
Result sets and auto-commit
Scrollable result sets
Related reference
Holdable result sets