Java 如何将html表单数据同时插入到三个不同的表中?

Java 如何将html表单数据同时插入到三个不同的表中?,java,mysql,jsp,servlets,forms,http-post,Java,Mysql,Jsp,Servlets,Forms,Http Post,我正在尝试将html表单数据插入表单提交上的数据库,然后将用户重定向到确认页面。表单中的数据必须同时插入到三个不同的表中: 客户明细必须插入到客户表中 产品必须插入订购的产品表中 最后,发票/确认信息必须插入到客户订单表中 所有数据都是从同一个表单收集的。我正在使用Servlet获取数据。这对您来说可能很容易,但我不知道如何同时在三个不同的表中插入数据。。。数据库是Mysql。。。我可以使用INSERT-INTO语句来完成此操作吗?我该怎么办 // if purchase action is

我正在尝试
将html表单数据插入表单提交上的数据库
,然后将用户重定向到确认页面。表单中的数据必须同时插入到三个不同的表中:

  • 客户明细必须插入到客户表中
  • 产品必须插入订购的产品表中
  • 最后,发票/确认信息必须插入到客户订单表中
所有数据都是从同一个表单收集的。我正在使用
Servlet
获取数据。这对您来说可能很容易,但我不知道如何同时在三个不同的表中插入数据。。。数据库是
Mysql
。。。我可以使用
INSERT-INTO
语句来完成此操作吗?我该怎么办

// if purchase action is called
        } else if (userPath.equals("/purchase")) {

            if (cart != null) {
客户表:

// get customer details
       String first_name = request.getParameter("first_name");
       String last_name = request.getParameter("last_name");
       String phone = request.getParameter("phone");
       String email = request.getParameter("email");
       String address_1 = request.getParameter("address_1");
       String address_2 = request.getParameter("address_2");
       String city = request.getParameter("city");
       String State_Province_Region = request.getParameter("State_Province_Region");
       String Postal_Zip_Code = request.getParameter("Postal_Zip_Code");
       String country = request.getParameter("Country");
客户订单表:

// get order details
    String date_created = request.getParameter("OrderDate");
    String confirmation_number = request.getParameter("confirmationNumber");
    String invoice_number = request.getParameter("invoiceNumber");
    String reference_number = request.getParameter("referenceNumber");
订购产品表:

// get product details
    String product_id = request.getParameter("productId");
    String quantity = request.getParameter("quantity");
重定向到confirmation.jsp

// when data inserted into database send user to confirmation page
                        userPath = "/confirmation";
                }

尝试使用request.getParameter()获取Servlet中的所有表单数据。创建一个JDBC类(如果没有创建的话)!获取所有字段后,创建一个简单的POJO类,其中包含表单中字段的getter和setter,创建实例并将此对象传递给JDBC类。在JDBC中,编写3个不同的insert语句将数据放入表中。
按照这个-->

遵循实践->
1. 使用事先准备好的陈述(如果你不知道它是否值得知道)。
2.与其向JDBC类发送单个变量,不如发送一个包含所有值的对象。
3.使用单例方法(阅读它


试着自己学习,如果仍然卡住,试一下这些让我知道!

你可以将这3条语句执行成单独的查询,最后重定向到所需的页面。只是一个示例(没有尝试)


根据每个查询的返回值,您也可以根据您的要求使用正确的错误消息重定向。希望这能对您有所帮助。

您使用的是JDBC吗?@NomeshDeSilva:是的,我使用的是JDBC,它已经在我的Servlet中编程。您需要执行三个独立的
插入到
语句中。阅读在JDBC上,或者更好的是,使用Hibernate。如果你使用Hibernate,那么你就不必显式地执行三条语句。为什么你在servlet中创建JDBC连接,正如经验所示,你应该指导新蜜蜂正确的编程方法。他是一个新蜜蜂,应该学习所有的方法。在所有这些框架出现之前,甚至现在,servlet是基础或基础。如果你想学习,首先要学会失败,然后改正错误,比较每种方法,选择最好的方法,而不是像机器人一样坚持一种方法。我不想把他作为一个新的蜜蜂放到深海去。这就是所谓的经验,纳伦德拉。这取决于他:@NomeshDeSilva:我已经在我的resources.xml中创建了一个JDBC连接池。。。我猜我不需要像代码中所示那样在servlet中编写它?是的,这是绝对正确的!我只是想引导你进入流程。
    doPost(..........){

// get customer details
        String first_name = request.getParameter("first_name");
        String last_name = request.getParameter("last_name");
        String phone = request.getParameter("phone");
        String email = request.getParameter("email");
        String address_1 = request.getParameter("address_1");
        String address_2 = request.getParameter("address_2");
        String city = request.getParameter("city");
        String State_Province_Region = request.getParameter("State_Province_Region");
        String Postal_Zip_Code = request.getParameter("Postal_Zip_Code");
        String country = request.getParameter("Country");

       // get order details
        String date_created = request.getParameter("OrderDate");
        String confirmation_number = request.getParameter("confirmationNumber");
        String invoice_number = request.getParameter("invoiceNumber");
        String reference_number = request.getParameter("referenceNumber");

    // get product details
        String product_id = request.getParameter("productId");
        String quantity = request.getParameter("quantity");


        //JDBC get connection.
        Connection conn = getConnectionData(); // I hope you already have written this part.

        Statement s1 = null;
        Statement s2 = null;
        Statement s3 = null;

        try{
            s1 = conn.createStatement();
            s2 = conn.createStatement();
            s3 = conn.createStatement();

            //insert into customer table:

            int customerInsert = s1.executeUpdate("WRITE YOUR CUSTOMER INSERT QUERY HERE");
            int productInsert = s1.executeUpdate("WRITE YOUR PRODUCT INSERT QUERY HERE");
            int orderInsert = s1.executeUpdate("WRITE YOUR ORDER INSERT QUERY HERE");

            // if all 3 inserts are fine, then return to the success page, else the error page.
            String page = "";
            if(customerInsert > 0 & productInsert > 0 & orderInsert > 0){
               page = "sucessPage.jsp";
            }else{
               page = "errorPage.jsp";
            }
            // redirect:

            response.sendRedirect(page);

        }catch(SQLException e){
           e.printStackTrace();
        }finally{
           s1.close();
           s2.close();
           s3.close();
        }


}