0

如何将记录插入两个不同的表中?我做了两个sql语句,它不起作用。

private void cmdsubmitActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        try {
            String sql = "Insert into customer (Customer_ID,First_Name,Last_Name,Birthdate,Gender,Occupation,Address,Email,Contact,Status,Income,Amount,Term,Interest,Date_Applied,Purpose,Other) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            pst = conn.prepareStatement(sql);
            pst.setString(1, txtID.getText());
            pst.setString(2, txtfname.getText());
            pst.setString(3, txtlname.getText());
            pst.setString(4,((JTextField)birthdate.getDateEditor().getUiComponent()).getText());
            String gender = cmbgender.getSelectedItem().toString();
            pst.setString(5, gender);
            pst.setString(6, txtoccupation.getText());
            pst.setString(7, txtaddress.getText());
            pst.setString(8, txtemailadd.getText());
            pst.setString(9, txtcontact.getText());
            String status = cmbstatus.getSelectedItem().toString();
            pst.setString(10, status);
            String income = cmbincome.getSelectedItem().toString();
            pst.setString(11,income);
            pst.setString(12, txtamount.getText());
            String period = cmbperiod.getSelectedItem().toString();
            pst.setString(13, txtloan.getText() + " " + period);
            pst.setString(14, txtinterest.getText());
            pst.setString(15, ((JTextField)datechooser.getDateEditor().getUiComponent()).getText());
            String purpose = cmbpurpose.getSelectedItem().toString();
            pst.setString(16, purpose);
            pst.setString(17, txtother.getText());

            Double balance = Double.parseDouble(txtamount.getText()) * Double.parseDouble(txtinterest.getText());
            String s = "Insert into payments (Customer_ID,Customer_Name,Amount,Interest,To_Pay) values (?,?,?,?,?)";
            pst = conn.prepareStatement(s);
            pst.setString(1, txtID.getText());
            pst.setString(2, txtfname.getText()+","+txtlname.getText());
            pst.setString(3, txtamount.getText());
            pst.setString(4, txtinterest.getText());
            pst.setString(5, balance.toString());

            pst.execute();
            JOptionPane.showMessageDialog(null, "Record Save");

            Menu menu = new Menu();
            this.setVisible(false);
            menu.setVisible(true);


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

2 回答 2

1

问题似乎是您pst.execute()在致电此行之前没有致电:
pst = conn.prepareStatement(s);

这是覆盖你以前的pst变量;创建一个新的PreparedStatement.

于 2012-10-12T19:40:24.700 回答
1

我不完全确定那个 API,但似乎你有一个执行两个语句。此外,如果大部分代码完全相同,您应该考虑创建一个函数。需要维护的地方更少

于 2012-10-12T19:40:54.950 回答