Would like to know what is the problem in my sql statement

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Would like to know what is the problem in my sql statement

Karen Goh
Hi,

I hope that I am in the right forum because I am using pgAdmin4 running on Windows 10 to manage my database.
However, the question I have is to do with a sql that is not working out quite right hence this forum.


The error I am getting is
org.postgresql.util.PSQLException: No value specified for parameter 1.
        at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:257)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:290)
        at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
        at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
        at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:155)
        at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:118)
        at Controller.searchController.processRequest(searchController.java:123)
        at Controller.searchController.doGet(searchController.java:77)

Basically, I am trying to retrieve from a table which contains the id and also the subjects as per the user input parameterValues.

Here's my code snippet.

Please tell me why it says no value specified for parameter 1.

HashMap<Integer, ArrayList<String>> tutorSubject = new HashMap<Integer, ArrayList<String>>();

String sql1 = "select tutor_id, subject_name from tutor_subject where subject_name in ("
                                                       + builder.deleteCharAt( builder.length() -1 ).toString() + ")";
                               
                                PreparedStatement ps2 = connection.prepareStatement(sql1);
                                                                               
                                rs = ps2.executeQuery();
                                if (rs.next()) {
                                while(rs.next()) {
                        // System.out.println("tutor ID=" + rs.getInt("tutor_id") + ", subjectName=" + rs.getString("subject_name"));
                                        for( Object o : subjs ) {
                                        int tutor_id = rs.getInt(1);
                                        ps2.setInt(1, tutor_id);
                                        int index = 1;
                                       
                                        for( Object o : subjs ) {
                                        ps2.setObject(index++, o );
                                        for (int j = 0; j < tutorSubject.put(tutor_id, (ArrayList<String>) o).size(); j++) {
                                       
                                        tutorSubject.put(tutor_id, (ArrayList<String>) o);
                                        }


Reply | Threaded
Open this post in threaded view
|

Re: Would like to know what is the problem in my sql statement

Juan C. Olivares
Karen:

Can you just print sql1 to see which SQL statement are you executing?

On Thu, Jul 11, 2019 at 7:04 PM Karen Goh <[hidden email]> wrote:
Hi,

I hope that I am in the right forum because I am using pgAdmin4 running on Windows 10 to manage my database.
However, the question I have is to do with a sql that is not working out quite right hence this forum.


The error I am getting is
org.postgresql.util.PSQLException: No value specified for parameter 1.
        at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:257)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:290)
        at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
        at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
        at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:155)
        at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:118)
        at Controller.searchController.processRequest(searchController.java:123)
        at Controller.searchController.doGet(searchController.java:77)

Basically, I am trying to retrieve from a table which contains the id and also the subjects as per the user input parameterValues.

Here's my code snippet.

Please tell me why it says no value specified for parameter 1.

HashMap<Integer, ArrayList<String>> tutorSubject = new HashMap<Integer, ArrayList<String>>();

String sql1 = "select tutor_id, subject_name from tutor_subject where subject_name in ("
                                                       + builder.deleteCharAt( builder.length() -1 ).toString() + ")";                           

                                PreparedStatement ps2 = connection.prepareStatement(sql1);                                     

                                rs = ps2.executeQuery();                               
                                if (rs.next()) {
                                while(rs.next()) {
                        //      System.out.println("tutor ID=" + rs.getInt("tutor_id") + ", subjectName=" + rs.getString("subject_name"));
                                        for( Object o : subjs ) {
                                        int tutor_id = rs.getInt(1);
                                        ps2.setInt(1, tutor_id);
                                        int index = 1;                                                 

                                        for( Object o : subjs ) {
                                        ps2.setObject(index++, o );
                                        for (int j = 0; j < tutorSubject.put(tutor_id, (ArrayList<String>) o).size(); j++) {

                                        tutorSubject.put(tutor_id, (ArrayList<String>) o);
                                        }




--
Atte,
Juan Cristóbal Olivares

Reply | Threaded
Open this post in threaded view
|

Would like to know what is the problem in my sql statement

David G Johnston
In reply to this post by Karen Goh
On Thursday, July 11, 2019, Karen Goh <[hidden email]> wrote:

Please tell me why it says no value specified for parameter 1.

HashMap<Integer, ArrayList<String>> tutorSubject = new HashMap<Integer, ArrayList<String>>();

String sql1 = "select tutor_id, subject_name from tutor_subject where subject_name in ("
                                                       + builder.deleteCharAt( builder.length() -1 ).toString() + ")";                           


Because you don’t have any parameter placeholder symbols in your query?  I.e., the question mark “?” character...

David J.

Reply | Threaded
Open this post in threaded view
|

Re: Would like to know what is the problem in my sql statement

Karen Goh

Thank you all for telling me where is the problem. I was overwhelmed at attempting this for the first time and my eyes painful.

Now, it is working ok.

Thank you all for your help. Really appreciate it.
On Friday, July 12, 2019, 10:34:37 AM GMT+8, David G. Johnston <[hidden email]> wrote:


On Thursday, July 11, 2019, Karen Goh <[hidden email]> wrote:

Please tell me why it says no value specified for parameter 1.

HashMap<Integer, ArrayList<String>> tutorSubject = new HashMap<Integer, ArrayList<String>>();

String sql1 = "select tutor_id, subject_name from tutor_subject where subject_name in ("
                                                       + builder.deleteCharAt( builder.length() -1 ).toString() + ")";                           



Because you don’t have any parameter placeholder symbols in your query?  I.e., the question mark “?” character...

David J.