2/13/12

JDBC : Accessing Result Sets - Part I

This is my 3rd post on JDBC TUTORIAL. Today we will be learning about how to access the results that we get for a query using ResultSet

Whenever we execute a query to retrieve data from a table using a Java application, the output is stored in a ResultSet object in a tabular format. The ResultSet object maintains a cursor that helps us to move to and fro in the rows stored in the object and the cursor intially points before the first row.


Types of Result Sets


Now we know that the ResultSet object stores the output of a query in a tabular form and there are various types of ResultSet object :


- Read only : Allows us to only read the rows in a ResultSet object.

- Forward only : Allows us to move only in the forward direction i.e. the result set cursor can move only in the forward direction.

- Scrollable : Allows us to move the result set cursor backward and forward.

- Updatalbe : Allows us to update the result set rows retrieved from a database table.

We can specify the type of ResultSet object using the createStatement() method of the Connection interface. This was done in my previous tutorial on JDBC API TUTORIAL.

The table below lists the various fields of the ResultSet interface that we can use :


ResultSet Description
TYPE_SCROLL_SENSITIVE
Specifies that the cursor of the ResultSet object is scrollable and it reflects the changes in the data made by other users
TYPE_SCROLL_INSENSITIVE
Specifies that the cursor of the ResultSet object is scrollable and it DOES NOT reflects the changes in the data made by other users
TYPE_FORWARD_ONLY
Specifies that the cursor of the ResultSet object moves in forward direction only from the first row to the last row


The createStatement() method is an overloaded method that has three prototypes. 

- Statement createStatement() : Does not accept any parameter. This create sa default ResultSet object that only allows forward scrolling.

- Statement createStatement(int, int) : Accepts two parameters. The first  parameter  indicated the ResultSet type and the second parameter indicates the concurrency mode for the result set that determines whether the data in the result set can be updated.

- Statement createStatement(int , int, int) : In addition to the ResultSet type and concurrency mode, this method accepts third parameter. This parameter indicates whether or not, the result set is closed after committing data to the database.

SHARE THIS POST:

Related Posts:

  • Querying Data using the PreparedStatement Object Consider a scenario where a New Publishers, a pubhlishing company maintains information about the books and the authors in a database. The company wants an application using which they cab access the information about auth… Read More
  • Transaction Isolation Levels in JDBC The transaction isolation levels in JDBC help us to determine whether the concurrently running transactions in a DB can affect each other or not. If there are 2 or more transactions concurrently accessing the same DataBase,… Read More
  • Java : Using JDBC API Tutorial You need to use database drivers and the JDBC API while developing a Java application to retrive or store data in a database. The JDBC API classes and interfaces are available in the java.sql  and the javax.sql  … Read More
  • Creating a Basic JDBC application Today we will be creating a Basic JDBC application i.e. an application that will be able to retrieve information (student_name, roll_no, class, DOB, etc) from the database. I already gave a tutorial on connecting SQL Server… Read More
  • JDBC : Accessing Result Sets - Part I This is my 3rd post on JDBC TUTORIAL. Today we will be learning about how to access the results that we get for a query using ResultSet.  Whenever we execute a query to retrieve data from a table using a Java applic… Read More

1 comment:

  1. public static void Rule1()
    {
    Connection con = null;
    Statement st = null;
    ResultSet rs = null;
    int updateQuery=0;
    String url = "jdbc:mysql://localhost:3306/test";
    String user = "root";
    String password = "aiman";
    /***************/
    try
    {
    Class.forName("com.mysql.jdbc.Driver").newInstance(); // Load JBBC driver "com.mysql.jdbc.Driver".
    con = DriverManager.getConnection(url, "root", "aiman");/*Create a connection*/
    st = con.createStatement();
    /***count rows**/
    int count=0;
    ResultSet res = st.executeQuery("SELECT COUNT(*) FROM feature");
    while (res.next())
    {
    count = res.getInt(1);
    }
    System.out.println("Number of rows:"+count);
    /*****************************Inserting Values**************************/
    String w1,w2;
    String nsubj="nsubj";
    String query[] ={"SELECT * FROM Dependency WHERE header like 'nsubj'"};
    System.out.println("before printing");
    for(String q : query)
    {
    res = st.executeQuery(q);
    //System.out.println("Names for query "+ q +" are");
    while (res.next())
    {
    String header = res.getString("header");
    String wi = res.getString("wi");
    String wj = res.getString("wj");
    System.out.println(header+"|"+wi+"|"+wj);
    ResultSet res1 = null;
    Statement st1=null;
    st1=con.createStatement();
    String query1[] ={"SELECT * FROM tagtable WHERE word like 'wi' AND tag like '%NN%'"};
    for(String q1 : query1)
    {
    res1 = st1.executeQuery(q1);
    while (res1.next())
    {
    System.out.println("in the loop");
    System.out.println("*******************");
    String w = res1.getString("word");
    String tag = res1.getString("tag");
    System.out.println(w+"|"+tag);
    }
    }
    res1.close();
    }//end while
    System.out.println("done");
    }//end for
    res.close();
    st.close();
    con.close();

    /************************************************************************/
    }//try ends
    catch(Exception e)
    {
    System.out.println("Exception is = "+e);
    }
    }//rule 1 ends here
    }//feature class ends
    ----------------------------------------------------------------------

    THE INNER LOOP:
    while (res1.next())
    { System.out.println("in the loop"); System.out.println("*******************");
    String w = res1.getString("word");
    String tag = res1.getString("tag");
    System.out.println(w+"|"+tag);
    }
    DOES NOT GET EXECUTED ...!! HELP !

    ReplyDelete