将多行从jsp插入数据库mysql

问题描述 投票:0回答:1

将从我的数据库生成几行,并显示在我的jsp页面中。我放置了1个Submit按钮,一旦用户单击了Submit按钮,我想将jsp页面中显示的数据插入到MySQL表中。我已经在该论坛中搜索了答案,并尝试遵循给出的一些解决方案,但出现此错误:java.lang.ArrayIndexOutOfBoundsException:1,当我搜索错误时,它带我到po.setAddress(address [i]);

           po = new PaidOrder();
           po.setId(pid[i]);
           po.setPname(pname[i]);
           po.setQuantity(quantity[i]);
           po.setPrice(price[i]);
           po.setStatus(status[i]);
           po.setAddress(address[i]);
           po.setUser_email(user_email[i]); 

下面是完整代码:

JSP

<form action="PaidOrderController" method="post">
<table class="timetable_sub">
   <thead>
       <tr>
          <th>Product Name</th>
          <th>Quantity</th>
          <th>Price</th>
          <th>Total Price</th>
          <th>Action</th>
        </tr>
    </thead>
    <tbody>
    <%
        OrderDAO dao = new OrderDAO();
        List<Order> orderList = dao.getAllOrderByEmail(user);
        DecimalFormat df = new DecimalFormat("#0.00");
        for (Order o : orderList) {
     %>
        <tr class="rem1">
          <td class="invert"><%= o.getPname() %></td>
          <td class="invert"><%= o.getQuantity() %></td>
          <td class="invert">RM <%= df.format(o.getPrice()) %></td>
          <td class="invert">RM <%= df.format(o.getQuantity()*o.getPrice()) %></td>
          <td>
              <a href="EditCartController?action=edit&id=<%= o.getId()%>"><button type="button" class="btn btn-success">Edit</button></a>
              <a href="DeleteFromCartController?action=delete&id=<%= o.getId()%>"><button type="button" class="btn btn-danger">Delete</button></a>
          </td>
          <input type="hidden" name="id" value="<%= o.getId() %>">
          <input type="hidden" name="pname" value="<%= o.getPname() %>">
          <input type="hidden" name="quantity" value="<%= o.getQuantity() %>">
          <input type="hidden" name="price" value="<%= o.getQuantity()*o.getPrice() %>">
          <input type="hidden" name="status" value="paid">
          <input type="hidden" name="user_email" value="<%=user%>">
       </tr>
          <%
             }
          %>
<div class="form-group" style="margin-top:20px">
    <label for="exampleFormControlTextarea1">Please fill up your address for postage below:</label>
    <textarea class="form-control" name="address" rows="3"></textarea>
</div>
<div class="checkout-right-basket">
    <button type="submit">Make a Payment<span class="far fa-hand-point-right"></span></button>
</div>
</form>

付费订单模型]中的代码

public class PaidOrder {
    private String id;
    private String pname;
    private String quantity;
    private String price;
    private String status;
    private String address;
    private String user_email;

    public void setId(String id) {
        this.id = id;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public void setQuantity(String quantity) {
        this.quantity = quantity;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void setUser_email(String user_email) {
        this.user_email = user_email;
    }

    public String getId() {
        return id;
    }

    public String getPname() {
        return pname;
    }

    public String getQuantity() {
        return quantity;
    }

    public String getPrice() {
        return price;
    }

    public String getStatus() {
        return status;
    }

    public String getAddress() {
        return address;
    }

    public String getUser_email() {
        return user_email;
    }

}

PaidOrderController

@WebServlet(name = "PaidOrderController", urlPatterns = {"/PaidOrderController"})
public class PaidOrderController extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        PaidOrder po;
        List<PaidOrder> listPaidOrder= new ArrayList<>();

        String[] pid = request.getParameterValues("id");
        String[] pname = request.getParameterValues("pname");
        String[] quantity = request.getParameterValues("quantity");
        String[] price = request.getParameterValues("price");
        String[] status = request.getParameterValues("status");
        String[] user_email = request.getParameterValues("user_email");

        for(int i = 0; i < pid.length; i++){
            po = new PaidOrder();
            po.setId(pid[i]);
            po.setPname(pname[i]);
            po.setQuantity(quantity[i]);
            po.setPrice(price[i]);
            po.setStatus(status[i]);
            po.setUser_email(user_email[i]);

            listPaidOrder.add(po);

        }

        PaidOrderDAO.paidOrder(listPaidOrder);
    }

PaidOrderDAO

] >>
public static void paidOrder(List<PaidOrder> listPaidOrder){
        try(Connection conn = DBConnectionUtil.getConnection()) {

           String sql="INSERT INTO paid_orders(pname,quantity,price,status,user_email) VALUES (?,?,?,?,?)";
            PreparedStatement ps = conn.prepareStatement(sql); 

            for(PaidOrder o:listPaidOrder){
                ps.setString(1, o.getPname());
                ps.setString(2, o.getQuantity());
                ps.setString(3, o.getPrice());
                ps.setString(4, o.getStatus());
                ps.setString(5, o.getUser_email());
                ps.executeUpdate();
            }

         } catch (Exception e){
            System.out.println("OrderDAO error"+ e.getMessage());
        }
    }

我希望有人可以帮助我解决这个问题:(

将从我的数据库生成几行,并显示在我的jsp页面中。我已经放置了1个提交按钮,并且一旦用户单击提交按钮,我想插入显示在...

java jsp servlet-3.0
1个回答
1
投票

您收到的错误来自po.setAddress(address[i]);,因为表格中只有一个地址。从for循环中删除它,它将解决您的问题。

为了保存地址,例如,您需要更改processRequestpaidOrder的实现。 processRequest的实现可以更改为

© www.soinside.com 2019 - 2024. All rights reserved.