2017-09-10 70 views
0

preparedStatementを実行しようとしていて、次の例外が発生しています。org.postgresql.util.PSQLException:パラメータ1に値が指定されていません - Postgres

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:284) 
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428) 
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354) 
    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:169) 
    at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:117) 
    at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82) 
    at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82) 
    at com.eventory.dao.ManagerDao.isExists(ManagerDao.java:62) 
    at com.eventory.create.web.MSignUp.doPost(MSignUp.java:44) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) 
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457) 
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:748) 
Sep 10, 2017 8:15:20 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [com.eventory.create.web.MSignUp] in context with path [/eventory] threw exception 
java.lang.IllegalStateException: Cannot forward after response has been committed 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:321) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311) 
    at com.eventory.create.web.MSignUp.doPost(MSignUp.java:52) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) 
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457) 
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:748) 

これは例外を引き起こしているManagerDaoのメソッドです。

public static boolean isExists(String managerID) { 
     boolean st = false; 

     // sql = "SELECT managerID FROM ManagerLogin"; 
     try { 
      pstmt = currentCon.prepareStatement(GET_MANAGER_PASSWORD); 

      ResultSet rs = pstmt.executeQuery(); 
      while (rs.next()) { 
       String originalMID = rs.getString("managerID"); 
       if (originalMID.equals(managerID)) { 
        st = true; 
       } 
      } 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return st; 
    } 

のPreparedStatementは、私はMS SQLサーバーを使用していたとき、これは正常に動作して

GET_MANAGER_PASSWORD = "SELECT pwd FROM ManagerLogin WHERE managerID=?"; 

です。私はPostgresに切り替えました。クエリに何か問題はありますか?助けてください。このようなものであるべきあなたのクエリステートメント内のどこ

をパラメータmanagerIDを渡さない

+1

メッセージはクリスタルクリアです。それを読んだことはありますか?あなたは何を理解していますか?準備文の最初のパラメータの値を指定しましたか? –

+1

このステートメントは、マネージャIDをパラメータとして使用し、パスワードを返します。一方、あなたのJavaは引数を設定せず、マネージャーIDを返すことを期待しています。それはあなたに理にかなっていますか? – RealSkeptic

+0

私はpstmt.setString(1、managerID)を試しました。それはまだ仕事をしません。それは同じエラーを与える –

答えて

1

pstmt = currentCon.prepareStatement(GET_MANAGER_PASSWORD); 
pstmt.setString(1, managerID); 
ResultSet rs = pstmt.executeQuery(); 
//Rest of your code 

あなたのコードの残りの部分は、しかし、のコメントとしてあまり意味がありません@ RealSscpticの言及

+0

私はpstmt.setString(1、managerID)しようとしました。それはまだ仕事をしません。その同じエラーを与える –

関連する問題