Hinzufügen einer Zeile mit Spalten, die den Primär- und Fremdschlüssel JDBC @ sequenziert hab

Mein Programm hat einArtikel hinzufüge und Transaktion beenden Möglichkeit. DasFinishTransaction class fordert den Benutzer auf, die Kundeninformationen, die Zahlungsmethode und die Zahlung einzugeben.

Die Gesamtzahlung wird am Fenster angezeigt. Wenn der Benutzer auf das @ klicAuschecke button, die Daten sollen vom @ übertragen werdCUSTOMER table (Geben Sie die Kundendaten ein),ORDERS -Tabelle (geben Sie die gekauften Artikelinformationen ein) und dasTRANSACTION table (Geben Sie die Transaktionsinformationen ein).

Die Transaktionstabelle hat eine Spalte vonTRANS_CUSTNUM das ist ein Fremdschlüssel, der auf das @ verweiCUST_NUM in demCUSTOMER Tabelle

Mein Programm funktioniert gut, außer imTRANSACTION Tabelle. In meinem SQL-Entwickler wird keine Zeile hinzugefügt. Was denkst du ist falsch in meinem Code?

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.logging.*;

public class FinishTransaction extends JFrame implements ActionListener{
    JLabel totalLabel;
    JLabel nameLabel;
    JLabel addressLabel;
    JLabel contactLabel;
    JLabel custPaymentLabel;
    JLabel methodLabel;
    JLabel creditCardLabel;
    JTextField totalTextField;
    JTextField nameTextField;
    JTextField addressTextField;
    JTextField contactTextField;
    JTextField custPaymentTextField;
    JTextField creditCardTextField;
    final JButton mainMenuButton = new JButton("Main Menu");
    final ButtonGroup bGroup = new ButtonGroup();
    final JRadioButton cashRadioButton = new JRadioButton("Cash");
    final JRadioButton creditRadioButton = new JRadioButton("Credit Card");
    final JButton checkoutButton = new JButton("Checkout");

    static FinishTransaction fin = new FinishTransaction();
    static AddItem add = new AddItem();
    static int total = 0;
    static int payment = 0;
    static int change = 0;
    static String payment_desc;
    static int creditCard;

    public FinishTransaction(){
        //ui
    }

    public void actionPerformed(ActionEvent e){
        if(checkoutButton.getName().equals(((Component)e.getSource()).getName())){
            try{
                payment = Integer.parseInt(custPaymentTextField.getText());
                if(payment>=total){
                    change = payment - total;
                    JOptionPane.showMessageDialog(this, "Thank you for shopping! Your change is "+change, "Exiting", JOptionPane.INFORMATION_MESSAGE);
                }
                else
                    JOptionPane.showMessageDialog(this, "Your payment is not enough. Please try again!", "Error!", JOptionPane.ERROR_MESSAGE);
            }
            catch(NumberFormatException a){
                JOptionPane.showMessageDialog(this, "Invalid input", "Error!", JOptionPane.ERROR_MESSAGE);
            }
            Connection conn = null;
            PreparedStatement pstmt = null;
            PreparedStatement pstmt2 = null;
            PreparedStatement pstmt3 = null;
            String URL = "jdbc:oracle:thin:@VAIO:49160:xe";
            String USER = "mariel";
            String PASS = "1234";

            try {
                  Class.forName("oracle.jdbc.driver.OracleDriver");
                try {
                    String name = nameTextField.getText();
                    String address = addressTextField.getText();
                    int contact = Integer.parseInt(contactTextField.getText());
                    conn = DriverManager.getConnection(URL, USER, PASS);
                    String sql = "INSERT INTO CUSTOMER " + 
                            "VALUES(CustNumSeq.NEXTVAL, ?, ?, ?)";
                    pstmt = conn.prepareStatement(sql);
                    pstmt.setString(1, name);
                    pstmt.setString(2, address);
                    pstmt.setInt(3, contact);

                    pstmt.executeUpdate();

                    for(int index=0;index<add.itemNum.length;index++){
                        String sql2 = "INSERT INTO ORDERS "+
                                "VALUES(OrderNumSeq.NEXTVAL, ?, ?)";    
                        pstmt2 = conn.prepareStatement(sql2);
                        pstmt2.setInt(1,add.itemNum[index]);
                        pstmt2.setInt(2, add.quantity[index]);

                        pstmt2.executeUpdate();
                    }

                    creditCard = Integer.parseInt(creditCardTextField.getText());
                    String sql3 = "INSERT INTO TRANSACTION " + 
                            "VALUES(TransNumSeq.NEXTVAL, CustNumSeq.NEXTVAL, ?, ?, ?, ?)";
                    pstmt3 = conn.prepareStatement(sql3);
                    pstmt3.setInt(1, payment);
                    pstmt3.setString(2, payment_desc);
                    pstmt3.setInt(3, creditCard);
                    pstmt3.setInt(4, change);

                    pstmt.executeUpdate();
                } 
                catch (SQLException ex) {
                }
                catch(NumberFormatException a){
                    JOptionPane.showMessageDialog(this, "Invalid input", "Error!", JOptionPane.ERROR_MESSAGE);
                }
            }
            catch(ClassNotFoundException ex) {
                System.out.println("Error: unable to load driver class!");
                System.exit(1);
            }
            catch(NumberFormatException a){
                JOptionPane.showMessageDialog(this, "Invalid input", "Error!", JOptionPane.ERROR_MESSAGE);
            }
            finally{
                try{
                   if(pstmt!=null)
                      pstmt.close();
                }
                catch(SQLException se2){
                }
                try{
                   if(pstmt2!=null)
                      pstmt2.close();
                }
                catch(SQLException se2){
                }
                try{
                   if(pstmt3!=null)
                      pstmt3.close();
                }
                catch(SQLException se2){
                }
                try{
                   if(conn!=null)
                   conn.close();
                }
                catch(SQLException se){
                }
            }
        }
        else if(mainMenuButton.getName().equals(((Component)e.getSource()).getName())){
            EmployeeMode emp = new EmployeeMode();
            emp.setVisible(true);
            emp.setResizable(false);
            emp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            emp.setSize(400,300);
            this.setVisible(false);
        }
        if(creditRadioButton.isSelected()){
            creditCardLabel.setVisible(true);
            creditCardTextField.setVisible(true);
            payment_desc = "Credit Card";
        }
        else if(cashRadioButton.isSelected()){
            creditCardLabel.setVisible(false);
            creditCardTextField.setVisible(false);
            payment_desc = "Cash";
        }
    }
    public static void main(String args[]){
        fin.setVisible(true);
        fin.setResizable(false);
        fin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fin.setSize(500,400);
    }
}

(EDITED) Generierter Arbeitscode:

                        String name = nameTextField.getText();
                        String address = addressTextField.getText();
                        int contact = Integer.parseInt(contactTextField.getText());
                        conn = DriverManager.getConnection(URL, USER, PASS);

                        for(int index=0;index<add.itemNum.length;index++){
                            String sql = "INSERT INTO ORDERS "+
                                    "VALUES(OrderNumSeq.NEXTVAL, ?, ?)";    
                            pstmt = conn.prepareStatement(sql);
                            pstmt.setInt(1,add.itemNum[index]);
                            pstmt.setInt(2, add.quantity[index]);

                            pstmt.executeUpdate();
                        }

                        String sql2 = "INSERT INTO CUSTOMER " + 
                                "VALUES(CustNumSeq.NEXTVAL, ?, ?, ?)";
                        String generatedColumns[] = {"CUST_NUM"};
                        pstmt2 = conn.prepareStatement(sql2, generatedColumns);
                        pstmt2.setString(1, name);
                        pstmt2.setString(2, address);
                        pstmt2.setInt(3, contact);
                        pstmt2.executeUpdate();
                        ResultSet rs = pstmt2.getGeneratedKeys();
                        custNum = rs.getInt("CUST_NUM");

                        creditCard = Integer.parseInt(creditCardTextField.getText());
                        String sql3 = "INSERT INTO TRANSACTION " + 
                            "VALUES(TransNumSeq.NEXTVAL, ?, ?, ?, ?, ?)";
                        pstmt3 = conn.prepareStatement(sql3);
                        pstmt3.setInt(1, custNum);
                        pstmt3.setInt(2, payment);
                        pstmt3.setString(3, payment_desc);
                        pstmt3.setInt(4, creditCard);
                        pstmt3.setInt(5, change);

                        pstmt3.executeUpdate();

Antworten auf die Frage(4)

Ihre Antwort auf die Frage