ResultSet Cursor and Scrollability

This section describes what is ResultSet cursor and ResultSet scrollability.

Each ResultSet object maintains a cursor (pointer) to identify the current data row. The cursor of a newly created ResultSet object is positioned before the first row. How to move the cursor is depending on the scrollability of the ResultSet.

1. Non-scrollable ResultSet - The ResultSet object type is ResultSet.TYPE_FORWARD_ONLY, the default type. Non-scrollable ResultSet supports only cursor move method:

2. Scrollable ResultSet - The ResultSet object type is ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE. Scrollable ResultSet supports a number of cursor move methods:

Here is a sample program that loops through the ResultSet rows forward only with next() method:

 - Copyright (c) 20015,, All Rights Reserved.
import java.sql.*;
public class DerbyLoopResultSet {
  public static void main(String [] args) {
    Connection con = null;
    try {
      con = DriverManager.getConnection(
      Statement sta = con.createStatement(); 

// 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.");

// Move cursor forward only with next()
      System.out.println("List of Profiles:");
      while ( {
        String firstName = res.getString("FirstName");
        String lastName = res.getString("LastName");
        System.out.println("   "+firstName+" "+lastName);

// Close ResultSet

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

The output is listed below:

ResultSet non-scrollable.
List of Profiles:
   Janet Gates
   21d6 efd17
   1002 e3873
   11bd 58ad0
   1352 17d9
   13ba 88356
   1090 3fb07
   19c2 8770b
   Keith Harris

Last update: 2015.

Table of Contents

 About This Book

 JDBC (Java Database Connectivity) Introduction

 JDK (Java SE) Installation

 Installing and Running Java DB - Derby

 Derby (Java DB) JDBC Driver

 Derby (Java DB) JDBC DataSource Objects

 Java DB (Derby) - DML Statements

Java DB (Derby) - 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

 Java DB (Derby) - PreparedStatement

 MySQL Installation on Windows

 MySQL JDBC Driver (MySQL Connector/J)

 MySQL - PreparedStatement

 MySQL - Reference Implementation of JdbcRowSet

 MySQL - JBDC CallableStatement

 MySQL CLOB (Character Large Object) - TEXT

 MySQL BLOB (Binary Large Object) - BLOB

 Oracle Express Edition Installation on Windows

 Oracle JDBC Drivers

 Oracle - Reference Implementation of JdbcRowSet

 Oracle - PreparedStatement

 Oracle - JBDC CallableStatement

 Oracle CLOB (Character Large Object) - TEXT

 Oracle BLOB (Binary Large Object) - BLOB

 Microsoft SQL Server 2005 Express Edition

 Microsoft JDBC Driver for SQL Server - sqljdbc42.jar

 Microsoft JDBC Driver - Query Statements and Result Sets

 Microsoft JDBC Driver - DatabaseMetaData Object

 Microsoft JDBC Driver - DDL Statements

 Microsoft JDBC Driver - DML Statements

 SQL Server - PreparedStatement

 SQL Server CLOB (Character Large Object) - TEXT

 SQL Server BLOB (Binary Large Object) - BLOB

 JDBC-ODBC Bridge Driver - sun.jdbc.odbc.JdbcOdbcDriver

 JDBC-ODBC Bridge Driver - Flat Text Files

 JDBC-ODBC Bridge Driver - MS Access

 JDBC-ODBC Bridge Driver - MS SQL Server

 Summary of JDBC Drivers and Database Servers

 Additional Tutorial Notes to Be Added

 Outdated Tutorials


 PDF Printing Version