Re: isLast() and empty ResultSet
От | Oliver Jowett |
---|---|
Тема | Re: isLast() and empty ResultSet |
Дата | |
Msg-id | 42682645.4030104@opencloud.com обсуждение исходный текст |
Ответ на | isLast() and empty ResultSet ("Ruediger Herrmann" <ruediger.herrmann@gmx.de>) |
Список | pgsql-jdbc |
Ruediger Herrmann wrote: > Hello, > > I implemented an Iterator interface iterating over a ResultSet. Therefore > I rely on isLast() to implement the Iterator#hasNext() method. This works > fine unless the whole ResultSet is empty. > For empty RresultSets, isLast always returns true. > Stepping through the code I found the reason therefore. Line 544 of > AbstractJdbc2ResultSet says > if (rows_size == 0) > return false; // No rows. > At least to me this is suspicious as I would return the opposite. Might that > be a bug or is there any other reason to behave like this? It's not a bug, AFAIK. isLast() returns true if the resultset is positioned *on* the last row of the resultset. This means that if you have a 5-row resultset, isLast() is true when the 5th row is the currently active row (and you can retrieve data from that row at that point). For a 0-row resultset, we can never be on the last row as there are no rows at all. You could try something like this for your hasNext() condition: rs.isBeforeFirst() || (rs.getRow() != 0 && !rs.isLast()) (note that isBeforeFirst() returns false on an empty resultset, per javadoc) -O
В списке pgsql-jdbc по дате отправления: