JDBC Tutorials - Herong's Tutorial Notes
Dr. Herong Yang, Version 2.11

Closing ResultSet Objects - res.close()

This section describes how to close ResultSet objects with the res.close() method.

For each ResultSet object you received from a SELECT statement execution, there is large amount of resource allocated to this object. When you no longer need any data from a ResultSet object, you should close it with the res.close() method.

This tutorial Java program shows you how to do this:

/**
 * CloseResultSet.java
 * Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
 */
import java.sql.*;
public class CloseResultSet {
  public static void main(String [] args) {
    Connection con = null;
    try {

// Load Microsoft JDBC Driver 1.0
      Class.forName(
        "com.microsoft.sqlserver.jdbc.SQLServerDriver");

// Obtaining a connection to SQL Server
      con = DriverManager.getConnection(
          "jdbc:sqlserver://localhost:1269;"
        + "user=sa;password=HerongYang;"
        + "database=AdventureWorksLT");

// Run a SELECT statement
      Statement sta = con.createStatement(); 
      ResultSet res = sta.executeQuery(
        "SELECT * FROM SalesLT.Customer");
      res.next();
      String firstName = res.getString("FirstName");
      String lastName = res.getString("LastName");
      System.out.println("First customer: "+firstName+" "+lastName);

// Closing the ResultSet object
      res.close();
      if (res.isClosed()) 
        System.out.println("ResultSet closed.");

      con.close();        
    } catch (java.lang.ClassNotFoundException e) {
      System.err.println("ClassNotFoundException: "
        +e.getMessage());
    } catch (SQLException e) {
      System.err.println("SQLException: "
        +e.getMessage());
    }
  }
}

If you run this program, you will get:

First customer: Orlando Gee

Exception in thread "main" java.lang.AbstractMethodError: 
com.microsoft.sqlserver.jdbc.SQLServerResultSet.isClosed()Z
        at CloseResultSet.main(CloseResultSet.java:32)

As you can see, the res.close() method worked ok. But the res.isClosed() method gave an error, because res.isClosed was introduced in Java SE 6.0, and is not by Microsoft JDBC Driver 1.0.

Sections in This Chapter

Commonly Used JDBC Class Methods

Calling createStatement() and executeQuery

Receiving ResultSet Objects from executeQuery

Closing ResultSet Objects - res.close()

Looping through ResultSet with res.next()

Retrieving Field Values using res.get*() Methods

Using ResultSetMetaData Objects to List All Fields

Dr. Herong Yang, updated in 2007
Closing ResultSet Objects - res.close()