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();
}
}