Limitations of ResultSet object
Objects become serializable object only when its class implements java.io.5erializable
interface. We can send only Serializable objects over the network.
i. ResultSet object cannot be send over the network because it is not Serializable object.
ii. ResultSet object does not support beans style programming.
RowSet
RowSet object means it is the object of driver supplied Java class that implements javax.sql.RowSet interface. This RowSet interface is a sub interface of java.sql.ResultSet interface. We have three types of RowSets.
1. Cached RowSet
It is a disconnected RowSet. Behavior wise, it is like insensitive ResultSet object.
2. JDBC RowSet
It is connected RowSet. Behavior wise, it is like sensitive ResultSet object.
3. Web RowSet
It is a connected RowSet. It collects data from xml files.
All RowSet objects are Serializable objects and they support bean style programming (getter and setter method-based programming).
Oracle thin/OCI driver give support for RowSets by supplying the following three
classes in ojdbc14.jar (oracle 10g), orcrs12.jar(oracle 9i), ojdbc6.jaroracle 11g) files.
The classes are
i. oracle.jdbc.rowset.OracleCachedRowSet
ii. oracle.jdbc.rowset.OracleJDBCRowSet
iii. oracle.jdbc.rowset.OracleWebRowSet
Advantages with RowSets
i. Gives simplified programming (allows single object based setter and getter methods oriented programming).
ii. RowSets are serializable objects so they can be sent over the network.
Disadvantages with RowSets
i. Very few drivers support Rowsets.
ii. Allows only select operations.
iii. These are not industry standard.
Example on CachedRowSet
Source code for CachedRowSet:
CachedRowSetDemo.java
import java.sql.*;
import javax.sql.*;
public class CachedRowSetDemo
{
public static void main (String args []) throws Exception
{
//instance is created for OracleRowSet class
oracle.jdbc.rowset.OracleCachedRowSet crs = new oracle.jdbc.rowset.OracleCachedRowSet ();
//setter methods
crs.setUrl (“jdbc:oracle:thin:@Jocalhost:1521:orcl”);
crs.setUsername (“scott”);
crs.setPqssword (“tiger”);
crs.setCommand (“select* from college”);
crs.execute () ;
while (crs.next ())
{
System.out.println (crs.getString (1) +” “+crs.getString (2) + ” “+crs.getInt(3));
}
crs.close ();
}
}
crs.setCommand (“select * from college”): Is used to set the command for select query.
crs.execute (): is used to execute all above settled commands.
Example on JdbcRowSet
Source code for the program:
JdbcRowSetDemo.java
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.rowset.*;
public class JdbcRowSetDemo
{
public static void main (String args [] )throws Exception
{
try
{
//instance created for OraCleJDBCRowSet and referenced by RowSet
RowSet jrs = new OracleJDBCRowSet ();
jrs.setUrl (“jdbc:oracle:thin@localhost:1521:orcl”);
jrs.setUsername (“scott”);
jrs.setpassword (“tiger”);
jrs.setCommand (“select * from college”);
jrs.execute ();
while (jrs.next ())
{
System.out.println (jrs.getString (1) +” “+jrs.getString (2) + ” “+jrs.getInt (3));
}
jrs.close ();
}
catch (Exception e){}
}
}