How to move the ResultSet cursor to the next row 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).

You can move the cursor of the ResultSet object to the next row from the current position, using the next() method of the ResultSet interface.

rs.next()

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.

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'));

In the following JDBC program we have established connection with the database and retrieved the contents of the table named tutorials_data into a ResultSet object, initially the cursor in this object will be at the default position (before first row), using the next() method we have moved the cursor from default position to first row, from first row to the second row and, displayed the contents of the both rows.

Example

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class RSCursor_next {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating the Statement
      Statement stmt = con.createStatement();
      //Query to retrieve records
      String query = "Select * from tutorials_data";
      //Executing the query
      ResultSet rs = stmt.executeQuery(query);
      //Moving the cursor from default position to 1st row.
      rs.next();
      System.out.println("Contents of the first record: ");
      //Current record details.
      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();
      //Moving the cursor from default position to 2nd row.
      rs.next();
      System.out.println("Contents of the second record: ");
      //Current record details.
      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();
   }
}

Output

Connection established......
Contents of the first record:
ID: 1, Title: Java, Author: Krishna Kasyap, Submission date: 2019-09-01
Contents of the second record:
ID: 2, Title: JFreeCharts, Author: Satish kumar, Submission date: 2019-05-01
raja
Published on 15-May-2019 16:32:58
Advertisements