2015-05-25 3 views
0

Я пытаюсь сделать insert html-form data into a database on form submit, а затем перенаправить пользователя на страницу подтверждения. Данные из формы должны быть вставлены одновременно в три разные таблицы:Как вставлять данные html-формы в три разные таблицы одновременно?

  • данные клиента должны быть вставлены в таблицу клиентов;
  • изделия должны быть вставлены в таблицу заказываемых товаров;
  • , наконец, информация о счете/подтверждении должна быть вставлена ​​в таблицу customer_order.

Все данные собираются из одной и той же формы. Я использую 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"); 

Customer_order стол:

// 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"); 

Ordered_product Таблица:

// 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"; 
       } 
+0

вы используете JDBC ..? –

+0

@NomeshDeSilva: Да, я использую JDBC, он уже запрограммирован где-то в моем сервлете. – Boobada

+0

Вам понадобится выполнить три отдельных оператора INSERT INTO. Читайте на JDBC, или еще лучше, используйте Hibernate. Если вы используете Hibernate, вам не придется явно выполнять три оператора. –

ответ

-1

Попробуйте получить все данные формы в сервлете, используя request.getParameter(). Создайте класс JDBC (если он не был создан)! Получив все поля, создайте простой класс POJO, имеющий getter и setter для полей u, размахивающих в форме, создайте экземпляр и передайте этот объект вашему классу JDBC. В JDBC напишите 3 разных оператора insert, чтобы поместить данные в ваши таблицы.
Следуйте за этим ->http://www.vogella.com/tutorials/MySQLJava/article.html

Follow Practice->
1. Используйте подготовленное заявление (если и не знаю, на пользу это стоит знать).
2. Скорее отправка одного одиночного var в класс JDBC, Отправить объект со всеми значениями.
3. Используйте одноэлементно подход (Read It https://sourcemaking.com/design_patterns/singleton

Пытаться узнать самостоятельно, попробуйте их, если все еще застряли, дайте мне знать!

0

вы можете выполнить 3 заявления на отдельные запросы и, наконец, перенаправить к страница требуется. только один пример (не пробовал).

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


} 

на основе возвращаемых значений каждого запроса, вы можете перенаправить с соответствующим сообщением об ошибке, а также на основе ваших требований. надеюсь, что это поможет.

+0

Почему вы создаете соединение JDBC в сервлете? Как опытный, u должен направлять новую пчелу, чтобы исправить программирование методов. –

+0

Он - новая пчела и должен изучить все подходы. до появления всех этих фреймворков, и даже теперь сервлет является базой или основой. Если вы хотите учиться, сначала научитесь терпеть неудачу, затем исправьте ошибки, сравните каждую методологию и выберите лучший подход. а не придерживаться одного метода, такого как робот. И я не хотел укладывать его в глубокое море как новая пчела. это называется опытом г-на Нарандры. это зависит от него :) –

+0

@NomeshDeSilva: Я уже создал пул соединений JDBC в моих ресурсах. xml ... im guessing Мне не нужно записывать его в сервлет, как показано в вашем коде? – Boobada

Смежные вопросы