目前我正在制作一个应用程序,它是一个汽车租赁应用程序。该应用程序可以租一辆车,返回汽车等。为了返回一辆汽车,我使用返回汽车的人的用户名,尝试查询数据库并取出他们租用的汽车,然后更新用户以不再租用汽车并更新汽车详细信息成为可用。但是,我注意到,当我查询数据库我得到一个空回报。我看到我的桌子上有这个用户,所以也许我的语法错了,请帮忙。在我的sql一个servlet中查询和更新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) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilt erChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java: 52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina。 core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java: 504) at org.apache.catalina.valves.AbstractAccessLogValve.i nvoke(AbstractAccessLogValve.java:620) 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 在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) 在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132) 在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:684) 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1539) at org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1495) 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)
我在通过调试模式运行时遇到了一些问题,但是如果无法登录,我收到了一个错误,但是我无法登录。说明无效的密码 –
'uname'的价值是什么?这是否与数据库中的User_Name列完全匹配?在其他数据库客户端运行查询时会发生什么?另外,请参阅[SQL注入](https://www.owasp.org/index.php/SQL_Injection)攻击。 –
uname的值是由客户端给出的用户名,它完全匹配User_Name列的用户名。并感谢您的阅读! –