Обсуждение: unusual ResultSet.next() behaviour

Поиск
Список
Период
Сортировка

unusual ResultSet.next() behaviour

От
"Les Carter"
Дата:
This is a multi-part message in MIME format. --bound1122440425 Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding:quoted-printable Consider the following code snippet where rs is a ResultSet object obtained
froma previous query:<br /><br />    for(int count=0; count!=someValue; count++)<br />    {<br />        if(!rs.next())
throwSomeException();<br />    }<br />    rs.next();<br /><br />Pretty simple, just cycle through someValue number of
recordsand then get the next record after that.  For some reason, say if the query has 20 rows that will be returned,
andI set someValue to be 5 for arguments sake, it will go through the for loop with no problems, but when it comes out
ofthe for loop and tries to the next rs.next() operation it always returns false.  I can increase someValue to 10 and
itwill still loop without a problem, but it will always return false for that rs.next() operation following the for
loop.<br/><br />I can't see any rational reason for this.  I'm using PostgreSQL 8.0 and the JDBC 3 drivers on Win XP
withJDK 1.42_06.  The ResultS! et is a proxy object gained from a JBoss4.0 supplied connection pool.<br /><br />Can
anyoneoffer any explanation, or repeat the simple steps to confirm I'm not loosing my sanity?<br /><br />Cheers,<br
/><br/>L<br /> --bound1122440425--  

Re: unusual ResultSet.next() behaviour

От
Jan de Visser
Дата:
First off, you need a different e-mail client. The one you're using makes a
royal mess of MIME messages. Please stop using it (at least don't use it to
send to this list :)


On Wednesday 27 July 2005 01:00, Les Carter wrote:
> Consider the following code snippet where rs is a ResultSet object obtained
> from a previous query:
>
>     for(int count=0; count!=someValue; count++)
>     {
>         if(!rs.next()) throw SomeException();
>     }
>     rs.next();
>
> Pretty simple, just cycle through someValue number of records and then get
> the next record after that.  For some reason, say if the query has 20 rows
> that will be returned, and I set someValue to be 5 for arguments sake, it
> will go through the for loop with no problems, but when it comes out of the
> for loop and tries to the next rs.next() operation it always returns
> false.  I can increase someValue to 10 and it will still loop without a
> problem, but it will always return false for that rs.next() operation
> following the for loop.
>
> I can't see any rational reason for this.  I'm using PostgreSQL 8.0 and the
> JDBC 3 drivers on Win XP with JDK 1.42_06.  The ResultS! et is a proxy
> object gained from a JBoss4.0 supplied connection pool.
>
> Can anyone offer any explanation, or repeat the simple steps to confirm I'm
> not loosing my sanity?

Works for me. I don't see what you're experiencing; my next() after the loop
returns true.

>
> Cheers,
>
> L

JdV!!

--
--------------------------------------------------------------
Jan de Visser                     jdevisser@digitalfairway.com

                Baruk Khazad! Khazad ai-menu!
--------------------------------------------------------------

Re: unusual ResultSet.next() behaviour

От
Oliver Jowett
Дата:
Les Carter wrote:

> Can anyone offer any explanation, or repeat the simple steps to confirm
> I'm not loosing my sanity?

Well, if you could give us an actual testcase we could test it.. as it
is your explanation is very vague. I'm not aware of any problems with
the return value of next(), and it's a pretty fundamental bit of the API
so I'd be suprised if something was wrong here and none of the
regression tests failed.

-O

Re: unusual ResultSet.next() behaviour

От
"emergency.shower@gmail.com"
Дата:
On 7/27/05, Les Carter <carterl@newkinetics.com> wrote:
> This is a multi-part message in MIME format. --bound1122440425 Content-Type:
> text/html; charsetiso-8859-1 Content-Transfer-Encoding: quoted-printable
> Consider the following code snippet where rs is a ResultSet object obtained
> from a previous query:
>
>     for(int count=0; count!=someValue; count++)
>     {
>         if(!rs.next()) throw SomeException();
>     }
>     rs.next();
>
> Pretty simple, just cycle through someValue number of records and then get
> the next record after that.

I suspect that this isn't the code that actually produces the error.
If SomeException() is a constructor, this code wouldn't compile. Could
you post a more complete snippet?

-Alex