当前位置: 首页 > 知识库问答 >
问题:

在我的sql one servlet中查询和更新两个单独的表

阳建弼
2023-03-14

目前我正在做一个应用程序,这是一个租车的应用程序。该应用程序可以租车,还车等。对于还车,我输入还车者的用户名,试图查询数据库并提取出他们正在租哪辆车,然后更新用户不再有租车,并更新汽车细节以变得可用。然而,我注意到,当我查询数据库时,我得到了一个空返回。我看到我的表有这个用户,所以也许我的语法是错误的,请帮助。

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) {
        }

    }
}
INFO: Server startup in 7620 ms

java.lang.nullpointerException位于com.rental.servlet.adminReturnCarServlet.doPost(adminReturnCarServlet.java:63),位于javax.servlet.http.httpservlet.service(httpservlet.java:648),位于javax.servlet.http.httpservlet.service(httpservlet.java:729),位于org.apache.catalina.core.applicationFilterChain.InternaldoFilter(applicationFilterChain.java:292),位于doFilter(wsfilter.java:52),org.apache.catalina.core.applicationFilterChain.internaldoFilter(applicationFilterChain.java:240),org.apache.catalina.core.applicationFilterChain.doFilter(applicationFilterChain.java:207),org.apache.catalina.core.standardWrapperValve.invoke(StandardWrapperValve.invoke(StandardWrapperValve.invoke(StandardContIna.Valves.Abst在org.apache.catalina.core.standardHostValve.invoke(standardHostValve.java:141)在org.apache.catalina.valves.errorReportValve.invoke(errorReportValve.invoke(errorReportValve.java:79)在org.apache.catalina.valves.abractAccessLogValve.invoke(abractAccessLogValve.java:620)在)在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)在ent.threadpoolexecutor$worker.run(threadpoolexecutor.java:624)在org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)在java.lang.thread.run(thread.java:748)

共有1个答案

谭志用
2023-03-14

您的错误是因为java.sql.PreparedStatement st=null;在行处执行之前没有初始化:

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

希望能有所帮助。

 类似资料:
  • 我有两份清单: 我想要一个新的名单,比如: 我尝试了以下方法: 但有一些严重的错误

  • 问题内容: 我有2张桌子,如下所示: serial_table serial_key CHARACTER VARYING(20), PRIMARY KEY(id, serial_key) serial_rate: serial_key CHARACTER VARYING(20), rate NUMERIC, PRIMARY KEY(id, serial_key), FOREIGN KEY (id,

  • 我有两个搜索词“86746184549”和“3302093809”。我正在执行两个单独的术语查询,以获取与每个ID匹配的一个文档。 和 我认为terms查询在这里不起作用,因为它不会返回包含不同字段的文档。 我之所以要组合查询是因为,假设我有100个这样的术语,那么我将打100个电话!!到elasticsearch服务器。

  • 问题内容: 我有和桌子。 询问: 返回474条记录 对于这些记录,我想添加的表成的表。 示例 :如果对于第一条记录,客户的id是9 ,地址的也是9,那么我想在地址表的cid列中插入9。 我试过了: 但这似乎不起作用。 问题答案: 这是Postgres UPDATE JOIN格式: 这是其他变体:http : //mssql-to- postgresql.blogspot.com/2007/12/u

  • 问题内容: 是否有一个查询,我可以用一个查询交换两行的值? 问题答案: 您可以在本文中看到解决方案 http://www.microshell.com/database/sql/swap-values-in-2-rows- sql/ 看一下: 优雅的方法 ,进行联接以从2行中获取数据并在1行中进行交换,之后进行更新就很容易了。 例如:

  • 问题内容: 我在返回具有唯一字段的postgresql查询中的前X条记录时遇到了很大的帮助,现在遇到了我遇到的问题,并尝试尽我所能进行优化(尽管我通常不喜欢提前加载优化,这是一种独特的情况)。 想象一个应用程序中的三个实体: 字段看起来像这样: 要求 : 返回10个实例,其中: user_id不等于3 post_id是唯一的 没有其他具有该post_id和helped_by_user_id为3的实