In standard Java Database Connectivity (JDBC), working with standard ResultSet objects often requires manually opening connections, managing statements, and tracking resource life cycles. A JDBCRowSet wraps a standard ResultSet into a JavaBean component, making database handling flexible, easy to configure, and scrollable by default.
Key Steps to Create and Use JDBCRowSet
To implement a JdbcRowSet in your Java application, you follow these straightforward steps:
Obtain the RowSetProvider: Call RowSetProvider.newFactory() to obtain an instance of RowSetFactory.
Create JdbcRowSet: Use rowSetFactory.createJdbcRowSet() to get your row set instance.
Configure Connection Parameters: Set the database connection URL, username, and password using dedicated setter methods.
Define Query & Parameters: Set the SQL statement via setCommand() and bind query placeholders with setters like setString().
Execute and Process: Trigger execute() to load the records, iterate through the row set, and access column values smoothly.
Complete Java Code Example
import java.sql.SQLException;
import java.util.Scanner;
import javax.sql.rowset.JdbcRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;
public class JdbcRowSetDemo {
public static void main(String[] args) {
JdbcRowSetDemo demo = new JdbcRowSetDemo();
try (Scanner scanner = new Scanner(System.in)) {
System.out.print("Enter Country Code (e.g., IND, USA): ");
String countryCode = scanner.next();
demo.getCityInformation(countryCode);
} catch (Exception e) {
e.printStackTrace();
}
}
public void getCityInformation(String countryCode) {
try {
// 1. Create RowSetFactory
RowSetFactory factory = RowSetProvider.newFactory();
// 2. Create JdbcRowSet instance
try (JdbcRowSet jdbcRowSet = factory.createJdbcRowSet()) {
// 3. Set connection properties
jdbcRowSet.setUrl("jdbc:mysql://localhost:3306/world");
jdbcRowSet.setUsername("root");
jdbcRowSet.setPassword("password");
// 4. Set SQL query command and bind parameters
jdbcRowSet.setCommand("SELECT ID, Name, CountryCode, District, Population FROM city WHERE CountryCode = ?");
jdbcRowSet.setString(1, countryCode);
// 5. Execute query
jdbcRowSet.execute();
// 6. Iterate through the records
while (jdbcRowSet.next()) {
System.out.println("ID: " + jdbcRowSet.getInt("ID"));
System.out.println("Name: " + jdbcRowSet.getString("Name"));
System.out.println("CountryCode: " + jdbcRowSet.getString("CountryCode"));
System.out.println("District: " + jdbcRowSet.getString("District"));
System.out.println("Population: " + jdbcRowSet.getInt("Population"));
System.out.println("------------------------------------------");
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
import java.sql.SQLException;
import java.util.Scanner;
import javax.sql.rowset.JdbcRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;
public class JDBCRowSetDemo
{
// JDBC driver name and database URL
static final String JDBC_DRIVER="com.mysql.jdbc.Driver";
static final String DB_URL="jdbc:mysql://localhost:3306/world";
// Database credentials
static final String USERNAME="root";
static final String PASSWORD="root";
public static void main( String[] args )
{
JDBCRowSetDemo jdbcRowSetDemo =new JDBCRowSetDemo();
Scanner scanner =new Scanner(System.in);
while( true )
{
System.out.print("Enter City Country Code :");
String cityCountrycode = scanner.nextLine();
if( cityCountrycode.equals("exit") )
{
break;
}
jdbcRowSetDemo.getCityInformation(cityCountrycode);
}
scanner.close();
}
private void getCityInformation( String cityCountrycode )
{
JdbcRowSet jdbcRowSet =null;
try
{
/*
* Using RowSetFactory create the JdbcRowSet object.
*/
RowSetFactory rowSetFactory = RowSetProvider.newFactory();
jdbcRowSet = rowSetFactory.createJdbcRowSet();
/*
* Set the JdbcRowSet properties [URL,username,password,command]
*/
jdbcRowSet.setUrl(DB_URL);
jdbcRowSet.setUsername(USERNAME);
jdbcRowSet.setPassword(PASSWORD);
/*
* Sets the command property with a query that produces a ResultSet
* object containing all the data in the table
*/
jdbcRowSet.setCommand("select * from city where countrycode=?");
jdbcRowSet.setString(1, cityCountrycode);
/*
* The execute method does many things for you in the background:
*
* 1.It makes a connection to the database using the values you assigned to the url,
* username, and password properties.
*
* 2.It executes the query you set in the command property.
*
* 3.It reads the data from the resulting ResultSet object into the jdbcRs object.
*
*/
jdbcRowSet.execute();
/*
* Iterate the jdbcRowSet and get each row information
* of city table.
*/while( jdbcRowSet.next() )
{
int id = jdbcRowSet.getInt(1);
String name = jdbcRowSet.getString(2);
String countryCode = jdbcRowSet.getString(3);
String district = jdbcRowSet.getString(4);
int population = jdbcRowSet.getInt(5);
/*
* Display values
*/
System.out.print("ID: "+ id);
System.out.print(", Name: "+ name);
System.out.print(", CountryCode: "+ countryCode);
System.out.print(", District: "+ district);
System.out.println(", Population: "+ population);
}
}
catch( SQLException se )
{
se.printStackTrace();
}
catch( Exception e )
{
e.printStackTrace();
}
finally
{
if(jdbcRowSet!=null)
{
try
{
jdbcRowSet.close();
}
catch( SQLException e )
{
e.printStackTrace();
}
}
}
}
}
Output
Enter City Country Code :ind
ID:1024, Name: Mumbai (Bombay), CountryCode:IND, District: Maharashtra, Population:10500000ID:1025, Name: Delhi, CountryCode:IND, District: Delhi, Population:7206704ID:1026, Name: Calcutta [Kolkata], CountryCode:IND, District: West Bengali, Population:4399819ID:1027, Name: Chennai (Madras), CountryCode:IND, District: Tamil Nadu, Population:3841396------
Enter City Country Code :pak
ID:2822, Name: Karachi, CountryCode:PAK, District: Sindh, Population:9269265ID:2823, Name: Lahore, CountryCode:PAK, District: Punjab, Population:5063499ID:2824, Name: Faisalabad, CountryCode:PAK, District: Punjab, Population:1977246ID:2825, Name: Rawalpindi, CountryCode:PAK, District: Punjab, Population:1406214------
Enter City Country Code :exit
Environment Used
JDK version : 1.7.0_51
Mysql Server version : 5.6.19
To Download /JDBCRowSet_Read_DemoApp Project Click the below link
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTransactionManagementDemo
{
// JDBC driver name and database URL
static final String JDBC_DRIVER="com.mysql.jdbc.Driver";
static final String DB_URL="jdbc:mysql://localhost:3306/world";
// Database credentials
static final String USERNAME="root";
static final String PASSWORD="root";
public static void main( String[] args )
{
JDBCTransactionManagementDemo jdbcTransactionManagementDemo =new JDBCTransactionManagementDemo();
jdbcTransactionManagementDemo.addCityInformation();
}
private void addCityInformation()
{
Connection connection =null;
Statement statement =null;
try
{
/*
* Register the JDBC driver in DriverManager
*/
Class.forName(JDBC_DRIVER);
/*
* Establish connection to the Database using DriverManager
*/
connection = DriverManager
.getConnection(DB_URL, USERNAME, PASSWORD);
/*
* Set auto-commit to false
*/
connection.setAutoCommit(false);
String sql1 ="insert into city values(6000,'Bangalore','IND','Karnataka',400000)";
String sql2 ="insert into city values(6001,'Channai','IND','TamilNadu',200000)";
String sql3 ="insert into city values(6002,'Thiruvanathapuram','IND','Kerala',800000)";
/*
* Execute the query
*/
statement = connection.createStatement();
/*
* Execute each sql one by one
*/
statement.executeUpdate(sql1);
System.out.println(sql1 +" : Sql1 is Successfully executed");
statement.executeUpdate(sql2);
System.out.println(sql2 +": Sql2 is Successfully executed");
statement.executeUpdate(sql3);
System.out.println(sql3 +": Sql3 is Successfully executed");
/*
* If there is no error
*/
connection.commit();
System.out
.println("Changes are committed and applied to the Database");
}
catch( SQLException se )
{
/*
* Handle errors for JDBC
*/try
{
/*
* If there is any error.
*/
connection.rollback();
System.out
.println("Changes are rollbacked and not applied to the Database");
}
catch( SQLException e )
{
e.printStackTrace();
}
se.printStackTrace();
}
catch( ClassNotFoundException e )
{
/*
* Handle errors for Class.forName
*/
e.printStackTrace();
}
catch( Exception e )
{
try
{
/*
* If there is any error.
*/
connection.rollback();
System.out
.println("Changes are rollbacked and not applied to the Database");
}
catch( SQLException e1 )
{
e1.printStackTrace();
}
e.printStackTrace();
}
finally
{
/*
* finally block used to close resources
*/try
{
if( statement !=null )
{
statement.close();
}
}
catch( SQLException sqlException )
{
sqlException.printStackTrace();
}
try
{
if( connection !=null )
{
connection.close();
}
}
catch( SQLException sqlException )
{
sqlException.printStackTrace();
}
}
}
}
Output
insert into city values(6000,'Bangalore','IND','Karnataka',400000) : Sql1 is Successfully executed
insert into city values(6001,'Channai','IND','TamilNadu',200000): Sql2 is Successfully executed
insert into city values(6002,'Thiruvanathapuram','IND','Kerala',800000): Sql3 is Successfully executed
Changes are committed and applied to the Database
Environment Used
JDK version : 1.7.0_51
Mysql Server version : 5.6.19
To Download JDBCTransactionManagementDemoApp Project Click the below link