Re: how to resolve org.postgresql.util.PSQLException: ResultSet notpositioned properly, perhaps you need to call next. - Mailing list pgsql-jdbc

From Rob Sargent
Subject Re: how to resolve org.postgresql.util.PSQLException: ResultSet notpositioned properly, perhaps you need to call next.
Date
Msg-id D9E5D4FB-E6CD-4050-8535-C8CF9883DE16@gmail.com
Whole thread Raw
In response to Re: how to resolve org.postgresql.util.PSQLException: ResultSet notpositioned properly, perhaps you need to call next.  (Karen Goh <karenworld@yahoo.com>)
List pgsql-jdbc


On Sep 6, 2019, at 9:21 PM, Karen Goh <karenworld@yahoo.com> wrote:

Hi Rob,

I found out that Tomcat is inconsistent in giving me the result and as mentioned, even though certain lines are commented out it is pointing to the commented out lines.

And even after clearing cache whatsoever, I am still getting the old error which is not supposed to be there.

Till I really iron out all Tomcat problem, I can't comment anything. But, as of now, the problem I posted here is dissolved.

Right now, it is giving me concurrentModificationList exception at (String s : subject) but this is Java problem and nothing to do with Postgresql...so that's the state of thing now.

Yes, that’s what I suspected in my note about “current list being iterated”.  I think you might be better off with something similar to my approach to reading the “subject_name” value only once for each row.

Does your query return multiple rows per tutor per execution as I suspect from reading your query?


Thanks for the reply thought....oh the list is part of the domain model.....as what you have to do to every Model construction...
   
        for (String s: subjList)
// test if one entry of subjList matches the current row’s “subject_name” value, 
// repeatedly asking for “subject_name” from current rs
            if (s.contains(rs.getString("subject_name")))
// if so add current value to list being iterated
                subjList.add(rs.getString("subject_name"));
        newSub.addAll(subjList);
// If I follow the intent correctly (match subjects to tutor) I believe the following would be more effective
        String rsSubject = rs.getString("subject_name");
        if (subjList.contains(rsSubject)) {
            newSub.add(rsSubject);
        }
// However your sql seems to be asking for all tutors in a given zipcode and what subjects they handle.  You might want to at least order the return set by tutor to deal with one tutor over several result rows.  
Alternatively you could group subjects into an array per tutor:
String sql1 = "select t.tutor_contact_no, t.zipcode, t.tutor_id, array_agg(t2.subject_name) FROM s_tutor t JOIN tutor_subject t2  ON t.tutor_id = t2.tutor_id where t.zipcode = ?  And  t2.subject_name = Any((?)) group by t.tutor_contact_no,t.zipcode,t.tutor_id”;
and grab the array of tutor’s subjects.
Further your responce doesn’t tie specific tutor to specific subjects.  Perhaps you can add List<String>subjects to your “tutor” class?


    }
    myList.add(t);
    request.setAttribute("tutors", myList);       
    request.setAttribute("sub", newSub);
}

I hope this helps.

pgsql-jdbc by date:

Previous
From: Karen Goh
Date:
Subject: Re: how to resolve org.postgresql.util.PSQLException: ResultSet notpositioned properly, perhaps you need to call next.
Next
From: Dave Cramer
Date:
Subject: [pgjdbc/pgjdbc] cf42ba: [maven-release-plugin] prepare releaseREL42.2.6