There is a question in my mind. Consider the following code sample
in this case does resultset fetches all the rows of table in one shot or does it maintains some kind of buffer where is stores some set of records or does it goes everytime to the database and fetch the record when i do . If the resultset fetches all the records in one shot then why java people have not provided method to get the number of records in table directly. If it maintains buffer then on what factors does the buffer size depends and can we change that size. Basically i wanted to know how internally resultset works
Thanks in advance
Originally posted by Pankaj Tiwari:
in this case does resultset fetches all the rows of table in one shot or does it maintains some kind of buffer where is stores some set of records or does it goes everytime to the database and fetch the record when i do
According to JavaDoc executeQuery methods return ResultSet Object that contains the data produced by the given query.
As has already been pointed out, ResultSet is an interface. It's up to the individual JDBC driver vendors to implement that interface (despite what Malith Yapa says, you'd never implement your own ResultSet.) Some drivers may communicate all the data from a query immediately from the database to your JVM; other, more sophisticated ones won't, but rather they will buffer the data as you suspect, sending perhaps a dozen records at a time. It depends on the architecture of the driver and on the capabilities of the specific database. But in general, a decent driver won't download all the data from a large query result immediately -- that would often be too memory intensive and involve too much communications overhead.