2017-10-09 14 views
1

現在、私はレンタカーアプリケーションです。アプリケーションは車を貸し出し、車を返すことができます。車を返すために、私は車を返す人のユーザー名を引っ張って、DBを照会して、レンタカーしている車を引っ張ってから、レンタカーを持たなくして車の詳細を更新するようにユーザーを更新します利用可能になる。しかし、私はDBに照会しているときに、私はヌルリターンを得ています。私のテーブルにはこのユーザーがいるので、私の構文で間違っているかもしれません。SQLサーブレットで2つのテーブルを2つに分けて更新する

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 
    String carid = ""; 
    String uname = req.getParameter("User_Name"); 
    String defaulted = "User has no car"; 

    int rs; 
    Connection conn = null; 
    java.sql.PreparedStatement st = null; 
    String nativeSQL = ""; 
    ResultSet result =null; 

    try { 
     Context ctx = new InitialContext(); 
     Context env = (Context) ctx.lookup("java:comp/env"); 
     DataSource ds = (DataSource) env.lookup("jdbc/carRentalSystem"); 
     conn = ds.getConnection(); 

     conn.setAutoCommit(false); 
     result = st.executeQuery("SELECT * FROM userdetails where User_Name='"+ uname+"'"); 
     if(result.next()) { 
      carid= result.getString("Car_Rental"); 
     } 

     st = conn.prepareStatement("update userdetails SET Car_Rental ='" + defaulted+ "' where User_Name='" + uname+ "' "); 
     st.clearParameters(); 
     rs = st.executeUpdate(); 

     st = conn.prepareStatement("update cardetails SET Availability = 'Available' where id='" + carid+ "'"); 
     st.clearParameters(); 
     rs = st.executeUpdate(); 
     if (rs != 0) { 
      res.sendRedirect("carRental.jsp"); 
      return; 
     } else { 

     } 
     conn.commit(); 


    } catch (Exception e) { 
     try{conn.rollback();}catch(Exception e1){} 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (st != null) 
       st.close(); 
     } catch (java.sql.SQLException e) { 
     } 
     try { 
      if (conn != null) 
       conn.close(); 
     } catch (java.sql.SQLException e) { 
     } 

    } 
} 

}

のjavaxでcom.rental.servlet.AdminReturnCarServlet.doPost(AdminReturnCarServlet.java:63) で

INFO: Server startup in 7620 ms 

java.lang.NullPointerExceptionが を次のように私のエラーを読み取り.servlet.http.HttpServlet.service(HttpServlet.java:648) (javax.servlet.http.HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilt (ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java: 5235) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina。 org.apache.catalina.authenticatorBase.invoke(AuthenticatorBase.java:StandardContextValue.java: 504) at org.apache.catalina.valves.AbstractAccessLogValve.i org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) のnvoke org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter。サービス(CoyoteAdapter.java:502) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:684) at (NioEndpoint.java:1539) (NioEndpoint.java:1495) のorg.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) (org.apache.tomcat.util.threads.TaskThread)$ WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:

st.executeQuery("SELECT * FROM userdetails where User_Name='"+ uname+"'"); 

はそれが役に立てば幸い:java.sql.PreparedStatement st = null;はラインでその実行前に初期化されていないため、748)

+0

私はそれをデバッグモードで実行していましたが、私はエラーが発生しました。ログインできなかった場合、無効なパスワードが表示されますが、ログインしようとしていません。 –

+0

'uname'の値は何ですか?それは正確にデータベースのUser_Name列と一致しますか?他のデータベースクライアントでクエリを実行するとどうなりますか?また、[SQLインジェクション](https://www.owasp.org/index.php/SQL_Injection)攻撃を参照してください。 –

+0

unameの値は、クライアントから与えられたユーザ名で、User_Nameカラムのユーザ名と正確に一致します。読んでいただきありがとうございます! –

答えて

2

あなたの誤差があります。

+0

これは非常に手助けしました、私はいくつかの行を修正し、今私は起動している! –

+1

喜んで、幸せなコーディングを手助けしました! – P3trur0

関連する問題