Re: Oracle query seems to return every row twice in ResultSet
David Karr wrote:
On Aug 12, 5:14 pm, Wojtek <nowh...@a.com> wrote:
David Karr wrote :
On Aug 12, 12:59 pm, Roedy Green <see_webs...@mindprod.com.invalid>
wrote:
On Wed, 12 Aug 2009 11:39:37 -0700 (PDT), "david.karr"
<davidmichaelk...@gmail.com> wrote, quoted or indirectly quoted
someone who said :
What could be going wrong here?
seehttp://mindprod.com/jgloss/sscce.html
We need to see the details.
I'm not sure what else I can provide. A fully working (or failing, as
the case might be) example would be pretty unlikely.
The only other directly relevant code is the "makeRecord()" method,
which is approximately this:
-------------
private Record makeRecord(final ResultSet rs)
throws SQLException {
Record record = new Record();
record.id = trimOrNull(rs.getString(1));
You should use getters and setters, so the above would be:
record.setID( trimOrNull(rs.getString(1)) );
Does this have any relevance to the problem?
private String trimOrNull(String str) {
return (str != null ? str.trim() : null);
}
This is an expensive way of doing it. Trim the value before you store
it, then just retrieve it.
Actually, I realized it has to be a little more complicated than
that. I have to set it to null if the string is empty or nothing but
blanks. My current method implements that, but this is also
irrelevant to the problem.
Look into commons-lang, they have a nifty class with a nice static method:
org.apache.commons.lang.StringUtils.trimToNull(String )
<http://commons.apache.org/lang/apidocs/org/apache/commons/lang/StringUtils.html#trimToNull(java.lang.String)>
Yes, you *can* write the code yourself, but why bother? Not to mention
there are a lot of other nifty classes and methods in that library :-)
You did not say HOW the records were duplicated:
1
1
2
2
3
3
4
4
or
1
2
3
4
1
2
3
4
The latter.
The other interesting detail is that I don't see this happen all the
time, even when it's retrieving the exact same set of records. My
current test case has 7 particular records. Sometimes it correctly
returns only the 7 records, sometimes it starts over again after the
7th, retrieving 1-7 again.
Sounds like the problem is on line 42 of the file you didn't show us.
In other words, we can't help you unless you can provide an SSCCE. Over
half of the benefit from constructing an SSCCE is in the process of
constructing it. You may find that you have done something silly, or
that its not actually happining the way you suspect. At the very
least, I would add some kind of logging to your while loop, to test
whether you're actually going through the result-set twice, or if the
result-set is twice as long as it should be.
--
Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>