【问题标题】:How to insert the same record into two different table in java?如何在java中将相同的记录插入到两个不同的表中?
【发布时间】:2012-10-12 19:37:34
【问题描述】:

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

【问题讨论】:

  • 你只执行一次,需要另一个 pst.execute()

标签: java mysql database jtable


【解决方案1】:

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

这将覆盖您之前的@​​987654323@ 变量;创建一个新的PreparedStatement

【讨论】:

  • @AldrinBerana 不客气!如果这解决了问题,我建议标记接受按钮(投票计数器下方的复选标记)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2019-05-25
    • 2014-03-14
    • 1970-01-01
    相关资源
    最近更新 更多