Re: how to resolve org.postgresql.util.PSQLException: ResultSet notpositioned properly, perhaps you need to call next.
От | Karen Goh |
---|---|
Тема | Re: how to resolve org.postgresql.util.PSQLException: ResultSet notpositioned properly, perhaps you need to call next. |
Дата | |
Msg-id | 1360229251.839248.1567442522789@mail.yahoo.com обсуждение исходный текст |
Ответ на | Re: how to resolve org.postgresql.util.PSQLException: ResultSet notpositioned properly, perhaps you need to call next. (rob stone <floriparob@gmail.com>) |
Список | pgsql-jdbc |
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 <floriparob@gmail.com> 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
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 <floriparob@gmail.com> 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
В списке pgsql-jdbc по дате отправления: