如何将相同的记录插入到java中的两个不同的表中?

时间:2012-10-12 19:37:34

标签: java mysql database jtable

如何将记录插入两个不同的表格?我做了两个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);
        }
    }       

2 个答案:

答案 0 :(得分:1)

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

这会覆盖您之前的pst变量;创建新的PreparedStatement

答案 1 :(得分:1)

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