0

2つの異なるテーブルにレコードを挿入するにはどうすればよいですか?2つの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については完全にはわかりませんが、2つのステートメントに対して1つの実行があるようです。また、コードの大部分がまったく同じである場合は、関数を作成することを検討する必要があります。メンテナンスする場所が少ない

于 2012-10-12T19:40:54.950 に答える