Scrollable ResultSet and Moving Cursor Backward

This section describes how to set ResultSet to be scrollable and how to move cursor backward.

There are two options when setting ResultSet to be scrollable:

Generally, TYPE_SCROLL_INSENSITIVE is the preferred option. The data contained in the ResultSet object is fixed (a snapshot) when the object is created. Here is a sample program that shows you how to create a scrollable ResultSet and how to move the cursor backward:

/* DerbyScrollableResultSet.java
 * Copyright (c) HerongYang.com. All Rights Reserved.
 */
import java.sql.*;
public class DerbyScrollableResultSet {
  public static void main(String [] args) {
    Connection con = null;
    try {
      con = DriverManager.getConnection("jdbc:derby://localhost/TestDB");

// Create a Statement for scrollable ResultSet
      Statement sta = con.createStatement(
        ResultSet.TYPE_SCROLL_INSENSITIVE,
        ResultSet.CONCUR_READ_ONLY);

// Catch the ResultSet object
      ResultSet res = sta.executeQuery("SELECT * FROM Profile");

// Check ResultSet's scrollability
      if (res.getType() == ResultSet.TYPE_FORWARD_ONLY) {
        System.out.println("ResultSet non-scrollable.");
      } else {
        System.out.println("ResultSet scrollable.");
      }

      System.out.println("List of Profiles:");

// Move the cursor to the last row
      res.last();

// Stop the loop when the cursor is positioned before the first row
      while (!res.isBeforeFirst()) {
        String firstName = res.getString("FirstName");
        String lastName = res.getString("LastName");
        System.out.println("   "+firstName+" "+lastName);

// Move the cursor backward one row
        res.previous();
      }

// Close ResultSet and Statement
      res.close();
      sta.close();

      con.close();
    } catch (Exception e) {
      System.err.println("Exception: "+e.getMessage());
    }
  }
}

The output matches my expectation: profiles are listed backward.

ResultSet scrollable.
  List of Profiles:
  Keith Harris
  1ea2 480c7
  17e1 99a5d
  8c4 68909
  11bd 99552
  10cc ab361
  8ef 466ca
  256d aa3f5
  Janet Gates

Table of Contents

 About This Book

 JDBC (Java Database Connectivity) Introduction

 JDK (Java SE) Installation

 Installing and Running Derby (Java DB)

 Derby (Java DB) JDBC Driver

 Derby (Java DB) JDBC DataSource Objects

 Derby (Java DB) - DML Statements

Derby (Java DB) - ResultSet Objects of Queries

 What Is ResultSet?

 ResultSet Cursor and Scrollability

 ResultSet Cursor Initial Position: Before First Row

 Retrieving Column Values with getXXX() Methods

 ResultSet Default Type: Forward-only

Scrollable ResultSet and Moving Cursor Backward

 ResultSet Objects with Update Capability

 insertRow() - Inserting New Rows through ResultSet Objects

 updateXXX() - Updating Column Values for Row Update or Insert

 deleteRow() - Deleting Rows through ResultSet Objects

 Derby (Java DB) - PreparedStatement

 Summary of JDBC Drivers and Database Servers

 Using Connection Pool with JDBC

 Archived Tutorials

 References

 Full Version in PDF/EPUB