Ошибка в Jframe: невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь поместить несколько строк в таблицу productorder с одним и тем же внешним ключом, который является таблицей order_id из orders, но эта ошибка продолжает отображаться:

com. mysql .jdb c .exceptions.jdbc4.MYSQLIntegrityConstraintViolationException Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется ('store', 'productorder', CONSTRAINT 'productorder_ibfk_1', FOREIGN KEY ('order_id'), REFEREN orders '(' order_id '))

Вот мой код:

 private void SUBMIT1ActionPerformed(java.awt.event.ActionEvent evt) {
  try{
      Class.forName("com.mysql.jdbc.Driver");
        Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/homemade","root", "");

        String sql3 = "insert into productorder(order_id, prod_id, quantity, subtotal_price) values (LAST_INSERT_ID(), ?, ?, ?)";
        String sql4 = "SELECT MAX(order_id) FROM orders ";
        PreparedStatement pst3 = conn.prepareStatement(sql3);
        PreparedStatement pst4 = conn.prepareStatement(sql4);
        String sql5 = "insert into productorder(order_id, prod_id, quantity, subtotal_price) values (LAST_INSERT_ID(), ?, ?, ?)";
        String sql6 = "SELECT MAX(order_id) FROM orders ";
        PreparedStatement pst5 = conn.prepareStatement(sql5);
        PreparedStatement pst6 = conn.prepareStatement(sql6);
        String sql7 = "insert into productorder(order_id, prod_id, quantity, subtotal_price) values (LAST_INSERT_ID(), ?, ?, ?)";
        String sql8 = "SELECT MAX(order_id) FROM orders ";
        PreparedStatement pst7 = conn.prepareStatement(sql7);
        PreparedStatement pst8 = conn.prepareStatement(sql8);
        String sql9 = "insert into productorder(order_id, prod_id, quantity, subtotal_price) values (LAST_INSERT_ID(), ?, ?, ?)";
        String sql10 = "SELECT MAX(order_id) FROM orders ";
        PreparedStatement pst9 = conn.prepareStatement(sql9);
        PreparedStatement pst10 = conn.prepareStatement(sql10);
        String sql11 = "insert into productorder(order_id, prod_id, quantity, subtotal_price) values (LAST_INSERT_ID(), ?, ?, ?)";
        String sql12 = "SELECT MAX(order_id) FROM orders ";
        PreparedStatement pst11 = conn.prepareStatement(sql11);
        PreparedStatement pst12 = conn.prepareStatement(sql12);
        String sql13 = "insert into productorder(order_id, prod_id, quantity, subtotal_price) values (LAST_INSERT_ID(), ?, ?, ?)";
        String sql14 = "SELECT MAX(order_id) FROM orders ";
        PreparedStatement pst13 = conn.prepareStatement(sql13);
        PreparedStatement pst14 = conn.prepareStatement(sql14); 

    if(shanghai1.isSelected() == true){
       pst3.setString(1, "4");
       pst3.setString(2, shangqua.getText());
       pst3.setString(3, subShang1.getText());
       pst3.executeUpdate();
       pst4.executeQuery();
   }




    if(siomai1.isSelected() == true){
       pst5.setString(1, "5"); 
       pst5.setString(2, sioqua.getText());
       pst5.setString(3, subSiomai1.getText());
       pst5.executeUpdate();
       pst6.executeQuery();
    }



    if(burger1.isSelected() == true){
       pst7.setString(1, "1"); 
       pst7.setString(2, burqua.getText());
       pst7.setString(3, subBurger1.getText());
       pst7.executeUpdate();
       pst8.executeQuery(); 

    }



    if(embotido1.isSelected() == true){
       pst9.setString(1, "2");  
       pst9.setString(2, embqua.getText());
       pst9.setString(3, subEmbotido1.getText());
       pst9.executeUpdate();
       pst10.executeQuery();
    }


    if(skinless1.isSelected() == true){
       pst11.setString(1, "6"); 
       pst11.setString(2, skiqua.getText());
       pst11.setString(3, subSkinless1.getText());
       pst11.executeUpdate();
       pst12.executeQuery();
    }


    if(nuggets1.isSelected() == true){
        pst13.setString(1, "3"); 
        pst13.setString(2, nugqua.getText());
        pst13.setString(3, subNuggets1.getText());
        pst13.executeUpdate();
        pst14.executeQuery();
    }


    JOptionPane.showMessageDialog(null, "Record updated successfully!");



    }
   catch(Exception e){
       JOptionPane.showMessageDialog(null, e);
   }

и вот схема таблицы:

Изображение диаграммы таблицы

...