How do you check if a ResultSet is empty or not in JDBC?


Whenever we execute SQL statements using the executeQuery() method, it returns a ResultSet object which holds the tabular data returned by the SELECT queries(in general).

The ResultSet object contains a cursor/pointer which points to the current row. Initially this cursor is positioned before first row (default position).

The next() method

The next() method of the ResultSet interface moves the pointer of the current (ResultSet) object to the next row, from the current position.

This method returns a boolean value specifying whether the ResultSet object contains more rows. If there are no rows next to its current position this method returns false, else it returns true.

Therefore, soon you retrieve the ResultSet object if the first call on the next() method returns false that indicated that the obtained ResultSet object has no records.

Let us create a table with name tutorials_data in MySQL database using CREATE statement as shown below −

CREATE TABLE tutorials_data (
   tutorial_id INT,
   tutorial_title VARCHAR(100),
   tutorial_author VARCHAR(40),
   submission_date date,
   PRIMARY KEY (tutorial_id)
);

Now, we will insert 5 records in tutorials_data table using INSERT statements −

insert into tutorials_data values(1, 'Java', 'Krishna Kasyap', DATE('2019-09-01'));
insert into tutorials_data values(2, 'JFreeCharts', 'Satish Kumar', DATE('2019-05-01 '));
insert into tutorials_data values(3, 'JavaSprings', 'Amit Tiwari', DATE(' 2019-05-01'));
insert into tutorials_data values(4, 'Android', 'Sai Ram', DATE('2019-03-01'));
insert into tutorials_data values(5, 'Cassandra', 'Pruthvi Raj', DATE(' 2019-04-06'));

Following JDBC examples retrieves the contents of above mentioned table into a ResultSet object and verifies whether it is empty or not.

Example

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RS_is_empty {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/mydb";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from tutorials_data");
      if(rs.next()) {
         System.out.println("Obtained Resultset object is not empty its contents are:");
         rs.beforeFirst();
         while(rs.next()) {
            System.out.print("ID: "+rs.getInt("tutorial_id")+", ");
            System.out.print("Title: "+rs.getString("tutorial_title")+", ");
            System.out.print("Author: "+rs.getString("tutorial_author")+", ");
            System.out.print("Submission date: "+rs.getDate("submission_date"));
            System.out.println();
         }
      } else {
         System.out.println("Obtained ResultSet object is empty");
      }
   }
}

Output

Connection established......
Obtained Resultset object is not empty its contents are:
ID: 1, Title: Java, Author: Krishna Kasyap, Submission date: 2019-09-01
ID: 2, Title: JFreeCharts, Author: Satish kumar, Submission date: 2019-05-01
ID: 3, Title: JavaSprings, Author: Amit Tiwari, Submission date: 2019-03-01
ID: 4, Title: Android, Author: Sai Ram, Submission date: 2019-03-01
ID: 5, Title: Cassandra, Author: Pruthvi Raj, Submission date: 2019-04-06

Vikyath Ram
Vikyath Ram

A born rival

Updated on: 21-Feb-2020

5K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements