Re: how to resolve org.postgresql.util.PSQLException: ResultSet not positioned properly, perhaps you need to call next.
Karen Goh <[email protected]> Mon, 2 Sep 2019 16:42:02 +0000 (UTC)
| Newsgroups | gmane.comp.db.postgresql.jdbc |
|---|---|
| Message-ID | <[email protected]> |
I have problem replying at below due to Yahoo's mail limitation. You suggestion doesn't help me in resolving the exception. And there is nothing wrong with the sql as I got the solution from a guy who is an expert in Postgresql. Unfortunately, I can't get him now. The version I am using is 11. And since the code works inside Eclipse, so OS doesn't matter.... Can someone tells me how to resolve the problem? As for the zipcode, it is not a concern whether it is text or whatsoever....because as mentioned all the other data can be printed.... On Monday, September 2, 2019, 3:35:21 PM GMT+8, rob stone <[email protected]> wrote: Hello, On Mon, 2019-09-02 at 06:28 +0000, Karen Goh wrote: > Hi experts, > > I have been trying to find a solution in the internet but there is > only 1 solution offered by stackoverflow in which the user uses if it > is not there then use a else to print out there is no more data/row > that appeared in that column. > > Basically, I was trying to get a List<String> which meet certain > search condition so the data will come from 2 tables - one of which > is a column from a join table and the List<String> falls under this > table. > > So, here's the code that I attempt to get the data out but keep > getting ResultSet not positioned properly. > > String[] subjectNames = > request.getParameterValues("txtsubjects"); > String zipcode = > request.getParameter("location"); > List<String> subjList = new > ArrayList<String>(Arrays.asList(subjectNames)); > List<tutor> myList = new ArrayList<>(); > ArrayList<String> subList = new ArrayList<>(); > CopyOnWriteArrayList<String>newSub = new > CopyOnWriteArrayList<String>(); > tutor t = new tutor(); > > > String sql1 = "select t.tutor_contact_no, > t.zipcode, t.tutor_id, 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((?))"; > > PreparedStatement ps2 = > connection.prepareStatement(sql1); > ps2.setString(1, zipcode); > for (int i = 0; i < subjectNames.length; i++) { > Array array = > connection.createArrayOf("text", subjList.toArray()); > ps2.setArray(2, array); > } > ResultSet rs = ps2.executeQuery(); > while (rs.next()) { > t.setContactNo(rs.getString("tutor_cont > act_no")); > t.setZipcode(rs.getString("zipcode")); > t.settutor_id(rs.getInt("tutor_id")); > > > > for (String s: subjList) > if > (s.contains(rs.getString("subject_name"))) > subjList.add(rs.getString("subject_na > me")); > newSub.addAll(subjList); > } > myList.add(t); > request.setAttribute("tutors", myList); > > request.setAttribute("sub", newSub); > > Please. I hope someone can tell me what's wrong with the code or how > to overcome this error...I have been struggling for 2 weeks already. > > Thanks. > } > myList.add(t); > > request.setAttribute("tutors", myList); > > request.setAttribute("sub", newSub); > > > I'm not an "expert". It is customary on these lists to supply the Postgres version, O/S, JDBC driver version and the JDK version. Also the error message from the PostgreSql log file. Is t.zipcode defined as INTEGER or VARCHAR? I would have used:- AND T2.subject_name = ANY(string_to_array(?)) supplying a suitably constructed string as the second parameter. You also need to cater for the query returning no rows. Hi Robert, Ca HTH, Robert