What is CONCUR_UPDATABLE ResultSet in JDBC? Explain?


It is a constant of the ResultSet class representing the concurrency mode for a ResultSet object that may be updated. In general, you will pass this as a value to the createStatement() method.

Statement createStatement(int resultSetType, int resultSetConcurrency);

A ResultSet with this as concurrency is updatable. i.e. once you get a ResultSet object you can update its contents.

Example

Suppose, we have a table named Employee in the database with the following contents:

+----+---------+--------+----------------+
| Id | Name    | Salary | Location       |
+----+---------+--------+----------------+
| 1  | Amit    | 3000   | Hyderabad      |
| 2  | Kalyan  | 4000   | Vishakhapatnam |
| 3  | Renuka  | 6000   | Delhi          |
| 4  | Archana | 96000  | Mumbai         |
| 5  | Sumith  | 11000  | Hyderabad      |
| 6  | Rama    | 11000  | Goa            |
| 7  | Mahesh  | 5300   | Vishakhapatnam |
| 8  | Ramesh  | 12000  | Hyderabad      |
| 9  | Suresh  | 7600   | Pune           |
| 10 | Santosh | 96000  | Mumbai         |
+----+---------+--------+----------------+

Following example increases the salary values of the employees by 5000 and prints the results. Since the ResultSet we have created in it is updatable you can update it and display the values.

import java.sql.*;
public class Updatable {
   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/TestDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
      ResultSet.CONCUR_UPDATABLE);
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from Employees");
      //Printing the contents of the table
      System.out.println("Contents of the table: ");
      rs.beforeFirst();
      while(rs.next()) {
         System.out.print("ID: " + rs.getInt("id"));
         System.out.print(", Salary: " + rs.getInt("Salary"));
         System.out.print(", Name: " + rs.getString("Name"));
         System.out.println(", Location: " + rs.getString("Location"));
      }
      System.out.println();
      //Moving the pointer to the starting point in the ResultSet
      rs.beforeFirst();
      //Updating the salary of each employee by 5000
      while(rs.next()) {
         //Retrieve by column name
         int newSal = rs.getInt("Salary") + 5000;
         rs.updateInt( "Salary", newSal );
         rs.updateRow();
      }
      System.out.println("Contents of the ResultSet after increasing salaries");
      rs.beforeFirst();
      while(rs.next()) {
         System.out.print("ID: " + rs.getInt("id"));
         System.out.print(", Salary: " + rs.getInt("Salary"));
         System.out.print(", Name: " + rs.getString("Name"));
         System.out.println(", Location: " + rs.getString("Location"));
      }
      System.out.println();
   }
}

Output

Connection established......
Contents of the table:
ID: 1, Salary: 3000, Name: Amit, Location: Hyderabad
ID: 2, Salary: 4000, Name: Kalyan, Location: Vishakhapatnam
ID: 3, Salary: 6000, Name: Renuka, Location: Delhi
ID: 4, Salary: 96000, Name: Archana, Location: Mumbai
ID: 5, Salary: 11000, Name: Sumith, Location: Hyderabad
ID: 6, Salary: 11000, Name: Rama, Location: Goa
ID: 7, Salary: 5300, Name: Mahesh, Location: Vishakhapatnam
ID: 8, Salary: 12000, Name: Ramesh, Location: Hyderabad
ID: 9, Salary: 7600, Name: Suresh, Location: Pune
ID: 10, Salary: 96000, Name: Santosh, Location: Mumbai
Contents of the ResultSet after increasing salaries
ID: 1, Salary: 8000, Name: Amit, Location: Hyderabad
ID: 2, Salary: 9000, Name: Kalyan, Location: Vishakhapatnam
ID: 3, Salary: 11000, Name: Renuka, Location: Delhi
ID: 4, Salary: 101000, Name: Archana, Location: Mumbai
ID: 5, Salary: 16000, Name: Sumith, Location: Hyderabad
ID: 6, Salary: 16000, Name: Rama, Location: Goa
ID: 7, Salary: 10300, Name: Mahesh, Location: Vishakhapatnam
ID: 8, Salary: 17000, Name: Ramesh, Location: Hyderabad
ID: 9, Salary: 12600, Name: Suresh, Location: Pune
ID: 10, Salary: 101000, Name: Santosh, Location: Mumbai

Updated on: 30-Jul-2019

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements