You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Manuel Rodriguez Diaz <mr...@ts.es> on 2002/05/28 18:56:13 UTC

ResultSet

Hi all,
I'm working with java 1.1. (this is a mandatory requirement).
In this version of Java, resultset are "FORWARD ONLY".
The fact is that i need to count the rows contained in a resultset
before displaying its data and the  way i've thought to do this is read
all the resultset.
rows= 0;
while( rs.next()) {
    rows++;
}

With my actual version of java, I would need to re-execute the query
again to get the pointer "beforeFirsted".
Is there any way to obtain a independent copy of a ResultSet without
executing the query again?

Thankyou


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: ResultSet

Posted by Manuel Rodriguez Diaz <mr...@ts.es>.
Thankyou.
I've just tried this.
In fact i write a select count(1) which is faster (for a reason i don't know).
The problem is that in many cases i have a group clause that cause problems with
this method.
So i thought this:

resultset= statement.CreateQuery();
resultset2= resultset;

Obviously, both resultset and resultset2 points the same set of data.
Because i have java 1.1, my resultsets are forward-only. When i loop resultset
to count, resultset2 loops too.

I've tried to clone the resultset too.
    ResultSet temp;
    Object aux= new Object();
    aux= (java.lang.Object)rs;
    temp= (ResultSet)aux.clone();

But it fails at compilation time. What can i do?

James Mitchell escribió:

> have you tried getting the row count from the db instead of looping
> yourself?
>
> this approach will offload a few resources (counting) back to the db
> (assuming its tiered) where it belongs(IMHO)
>
> //assuming your db supports count() [duh]
> //if you build your sql in chunks
> String sqlSelect = "Select Col1, Col2 "
> String sqlFrom   = "From myTable "
> String sqlWhere  = "Where Col3 = 'SomeVal'";
>
> //typically a helper function
> //execute the sql on your connection
> Resultset rs = getMyResults("Select count(*) as ct " + sqlFrom + sqlWhere);
> size = rs.getLong("ct")
> //proceed as you did before, but this time you have the row count.
>
> Hope this helps.
>
> James Mitchell
>
> > -----Original Message-----
> > From: Manuel Rodriguez Diaz [mailto:mrodr@ts.es]
> > Sent: Tuesday, May 28, 2002 12:56 PM
> > To: tomcat-dev@jakarta.apache.org
> > Subject: ResultSet
> >
> >
> >
> > Hi all,
> > I'm working with java 1.1. (this is a mandatory requirement).
> > In this version of Java, resultset are "FORWARD ONLY".
> > The fact is that i need to count the rows contained in a resultset
> > before displaying its data and the  way i've thought to do this is read
> > all the resultset.
> > rows= 0;
> > while( rs.next()) {
> >     rows++;
> > }
> >
> > With my actual version of java, I would need to re-execute the query
> > again to get the pointer "beforeFirsted".
> > Is there any way to obtain a independent copy of a ResultSet without
> > executing the query again?
> >
> > Thankyou
> >
> >
> > --
> > To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
>
> --
> To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


RE: ResultSet

Posted by James Mitchell <jm...@telocity.com>.
have you tried getting the row count from the db instead of looping
yourself?

this approach will offload a few resources (counting) back to the db
(assuming its tiered) where it belongs(IMHO)

//assuming your db supports count() [duh]
//if you build your sql in chunks
String sqlSelect = "Select Col1, Col2 "
String sqlFrom   = "From myTable "
String sqlWhere  = "Where Col3 = 'SomeVal'";

//typically a helper function
//execute the sql on your connection
Resultset rs = getMyResults("Select count(*) as ct " + sqlFrom + sqlWhere);
size = rs.getLong("ct")
//proceed as you did before, but this time you have the row count.

Hope this helps.

James Mitchell

> -----Original Message-----
> From: Manuel Rodriguez Diaz [mailto:mrodr@ts.es]
> Sent: Tuesday, May 28, 2002 12:56 PM
> To: tomcat-dev@jakarta.apache.org
> Subject: ResultSet
>
>
>
> Hi all,
> I'm working with java 1.1. (this is a mandatory requirement).
> In this version of Java, resultset are "FORWARD ONLY".
> The fact is that i need to count the rows contained in a resultset
> before displaying its data and the  way i've thought to do this is read
> all the resultset.
> rows= 0;
> while( rs.next()) {
>     rows++;
> }
>
> With my actual version of java, I would need to re-execute the query
> again to get the pointer "beforeFirsted".
> Is there any way to obtain a independent copy of a ResultSet without
> executing the query again?
>
> Thankyou
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>