Originally posted by Gulab Singh:
The scrollable resultset is availble only in JDBC version 2.0, getFetchSize/setFetchSize methords are not supported by JDBC 1.1.x.
Check your version of JDBC.
jdbc 2.0 is shipped with the jdk 1.3 which he has indicated is the version he is running. Doesn't mean that his driver implements it though. And the getFetchSize() does not need to have a scrollable resultset for the method to be implemented.
Now that I took a closer look at the original post, the getFetchSize() method does not do what you want it to do. It does not retrieve the number of rows in a table/resultset. It can hint to the JDBC driver the number of rows that should be fetched from the database when more rows are required for processing by the ResultSet object, but does not give you the desired row count. If you have 1,000,000 rows returned in a query, the jdbc driver does not load all the rows into the memory of the client. It only loads the number set by ,for example, setFetchSize(50). When it needs more rows(finished processing the first 50) it fetches 50 more...and so on. There is no easy jdbc method for obtaining row count. There are 2 common workarounds to find rowcount:
use the count function in your sql first, then execute the real query
eg. "select count(*) from emp where job = 'salesman'" then
"select id, name from emp where job = 'salesman'"
or
create a scrollable resultset. use the last() method to move to the last row then getRow() to find out the record number. The only caution with this is that when you use the last() method it still interates through all the rows until it reaches the last record and the performance of a scrollable resultset is less than that of a type forward only.
let us know how you dealt with your problem,
Jamie