2012-10-12 4 views
0

두 개의 다른 테이블에 레코드를 삽입하려면 어떻게해야합니까? 나는 두 개의 SQL 문을 만들었고 작동하지 않을 것이다.자바에서 두 개의 다른 테이블에 동일한 레코드를 삽입하는 방법은 무엇입니까?

문제는이 라인을 호출하기 전에 당신이 pst.execute()를 호출되지 않습니다 것으로 보인다
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); 
     } 
    }  
+1

무엇이 오류입니까? – Ankur

+0

한 번만 실행하고 다른 pst.execute()가 필요합니다 – PbxMan

답변

1

:
pst = conn.prepareStatement(s);

이 이전 pst 변수를 덮어이다; 새로운 PreparedStatement을 생성합니다.

+0

감사합니다! 그것은 나를 많이 돕는다! :) –

+0

@AldrinBerana 여러분을 환영합니다! 이 방법으로 문제가 해결되면 수락 버튼 (투표 카운터 아래에있는 체크 표시)을 선택하는 것이 좋습니다. – BenCole

1

나는 그 API에 대해 완전히 확신하지 못했지만 두 문장에 대해 하나만 실행하는 것처럼 보입니다. 또한 코드의 덩어리가 정확히 같으면 함수를 만드는 것을 고려해야합니다. 유지할 곳이 적음

관련 문제