使用servlet通过html页面更新数据库记录

时间:2019-05-15 06:15:50

标签: java servlets

我的请求将在else if条件下更新查询,但数据库中的记录未更新 帮助我摆脱这种情况 单击更新按钮后,我没有任何错误,数据库记录未插入数据库中

// imports ...

public class RequestData extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        out.print("<html>");
        out.print("<title>DataRetreving</title>");
        out.print("<body>");
        out.print("<table border=5 width=50% height=50% bgcolor=magenta align=center>");
        out.print("<tr>");
        out.print("<th><b>id</b></th>");
        out.print("<th><b>name</b></th>");
        out.print("<th><b>address</b></th>");
        out.print("<th><b>action</b></th>");
        out.print("<th><b>actionupdate</b></th>");
        out.print("</tr>");
        Driver driver = new OracleDriver();
        try {
            DriverManager.registerDriver(driver);
            Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/XE", "system",
                    "india124");
            Statement pst = connection.createStatement();
            if(request.getParameter("action")!=null && "delete".equals(request.getParameter("action")))
            {
                int id=Integer.parseInt(request.getParameter("id"));
                pst.executeUpdate("delete from employee where id="+id); 
            }
            else if(request.getParameter("id") != null
                    && request.getParameter("name") != null
                    && request.getParameter("address") != null              
                    && request.getParameter("update") != null 
                    && !"update".equals(request.getParameter("actionupdate")))
            {
              int id = Integer.parseInt(request.getParameter("id"));
              String name = request.getParameter("name");
              String address = request.getParameter("address");
              pst.executeQuery("insert into employee(id,name,address)"+"values("+id+",'"+name+"','"+address+"')");
            }
            else if(request.getParameter("actionupdate")!=null 
                    && "update".equals(request.getParameter("actionupdate"))) {
              int id = Integer.parseInt(request.getParameter("id")); 
              String name = request.getParameter("name"); 
              String address =request.getParameter("address");
              pst.executeUpdate("update employee set address='"+address+"',name='"+name+"'where id="+id+""); 
            } 

            ResultSet rst=pst.executeQuery("select *from employee");
            while (rst.next()) 
            {
                out.print("<tr>");
                out.print("<td align=center bgcolor=yellow><b> " + rst.getInt("id") + "</b></td>");
                out.print("<td align=center><b>" + rst.getString("name") + "</b></td>");
                out.print("<td align=center><b>" + rst.getString("address") + "</b></td>");
                out.print("<form align=center action=\"./requestdata\">");
                out.print("<td align=center bgcolor=yellow><a href=\"http://localhost:8082/RequestDataDemo/requestdata?id="
                  +rst.getInt("id")+"&action=delete\">DELETE</a></td>");
                out.print("<td align=center bgcolor=yellow><a href=\"http://localhost:8082/RequestDataDemo/requestdata?id="
                          +rst.getInt("id")+"&name="+rst.getString("name")+"&address="+rst.getString("address")+"&actionupdate=update\">UPDATE</a></td>");
                out.print("</tr>");
            }
            out.print("</table>");
            out.print("<br><br>");

            if(request.getParameter("actionupdate")!=null && "update".equals(request.getParameter("actionupdate"))) {
                 out.print("<form align=center action=\"./requestdata\">");
                 out.print("enter id  :<input type=\" text\" name = \" id \" value="+request.getParameter("id")+"><br><br>");
                 out.print("enter name: <input type=\"text\" name = \"name\" value="+request.getParameter("name")+"><br><br>");
                 out.print("enter address:<input type=\"text\" name = \"address \" value="+request.getParameter("address")+"><br><br>");
                 out.print(" <input type=\"submit\" value =\"update\"><br><br>");
                 out.print("</form>");
            }
            else
            {
              out.print("<form align=center action=\"./requestdata\">");
              out.print("eneter id  :<input type=" + "text" + " name = " + "id><br><br>");
              out.print("eneter name: <input type=" + "text" + " name = " + "name><br><br>");
              out.print("eneter address:<input type=" + "text" + " name = " + "address><br><br>");
              out.print(" <input type=" + "submit" + " value = " + "submit><br><br>");
              out.print(" <input type=" + "reset><br><br>");
              /* out.print("<input type='submit' value='delete'>"); */
              out.print("</form>");
            }
            out.print("</body>");
            out.print("</html>");
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        out.close();
    }
}

我的请求将要更新,但是数据库中的记录未更新 帮助我摆脱这种情况 单击更新按钮后,我没有任何错误,数据库记录未插入数据库中

1 个答案:

答案 0 :(得分:0)

我同意您应该重构此代码的所有评论。但是,我想尝试一下是很重要的。

我认为您在这里有一个逻辑问题:插入新记录时,您发送的是什么?我找不到那部分。

我猜您希望插入块运行,所以这种情况:

else if(request.getParameter("id") != null&&request.getParameter("name")!=null&&request.getParameter("address")!=null &&request.getParameter("update")!=null &&!"update".equals(request.getParameter("actionupdate") ))

是真的。但是,如果您查看该行的末尾,则希望显示“ update”参数,并且希望“ actionupdate”与“ update”不同。但是您没有在代码中设置这些。因此,此条件将始终为false,因此永远不会调用insert。

按下提交按钮时,会将参数Submit =“”发送到服务器。这样,您可以知道单击了哪个按钮。因此,也许添加一个带有value =“ insert”的提交按钮,并测试是否存在要在INSERT块中输入的按钮。

再次,通过重新访问所有条件和参数来尝试执行此操作,并查看何时/是否已设置以及何时设置为真。然后,绝对要花一些时间进行重构和练习更好的技术。