2012-03-12 2 views
0

안녕하세요! 내 업데이트 기능에 문제가 있습니다. mysql에 테이블이 있습니다. 즉, tblClientInfo, tblbusinessinfo, tblbusinesssituation, tblledger. 테이블 tblClientInfo는 기본 키 CLIENTID를가집니다. 다른 3 개의 테이블은이 클라이언트 ID를 외래 키로 사용합니다. 문제는 프로그램을 실행하고 사용자 인터페이스에서 채워지지 않은 텍스트 상자를 업데이트 할 때마다 업데이트 할 수 없다는 것입니다. tblClientInfo 내부의 정보 만 업데이트되고 다른 테이블은 업데이트되지 않습니다. 하지만 정보가 데이터베이스에 이미 존재한다면 업데이트 할 수 있습니다.GUI를 사용하여 데이터베이스 내 테이블을 업데이트하는 방법

private void cmdSaveMouseClicked(java.awt.event.MouseEvent evt) 
{          
    // TODO add your handling code here: 
    String sql = "insert into tblClientInfo (ClientID, LastName, FirstName, MiddleName, Gender, BirthPlace, BirthDate, " 
       + "Status, ResAddress, EmploymentQuery, HomeNo, ResidenceType) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) "; 

    String sql2 = "insert into tblBusinessInfo (tblBusinessInfo.ClientID, MarketID, StallNo, Location, BusinessTelNo, YearStarted, " 
       + "OtherBusinessQuery, MonthlyIncome, CarQuery, CarBrand, MortgagedQuery, PBalance) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 

    String sql3 = "insert into tblBusinessSituation (tblBusinessSituation.ClientID, MerchandiseID, StockValue, " 
       + "LowestSale, AverageSale) values (?, ?, ?, ?, ?)"; 

    String sql4 = "insert into tblledger (tblledger.ClientID, MarketID, LoanAmount, DateStarted, DailyPay, Expiry) " 
       + "values (?, ?, ?, ?, ?, ?)"; 

    try 
    { 
     pst = conn.prepareStatement(sql); 

     //===================================Client Information Layer======================================= 
     pst.setString(1, txtClientID.getText()); 
     pst.setString(2, txtLastName.getText()); 
     pst.setString(3, txtFirstName.getText()); 
     pst.setString(4, txtMiddleName.getText()); 
     pst.setString(5, (String) comboGender.getSelectedItem().toString()); 
     pst.setString(6, txtBirthPlace.getText()); 
     if(txtBirthDate.getText().isEmpty()) 
      pst.setString(7, null); 
     else 
      pst.setString(7, txtBirthDate.getText()); 
     pst.setString(8, (String) comboStatus.getSelectedItem().toString()); 
     pst.setString(9, txtAddress.getText()); 
     pst.setString(10, (String) comboEmploymentQuery.getSelectedItem().toString()); 
     if(txtHomeNo.getText().isEmpty()) 
      pst.setString(11, null); 
     else 
      pst.setString(11, txtHomeNo.getText()); 
     pst.setString(12, (String) comboResidency.getSelectedItem().toString()); 
     pst.execute(); 
     //System.out.println("Nasave ang sql ? : "+pst.execute()); 

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


    try 
    { 
     pst2 = conn.prepareStatement(sql2); 

     //===================================Buainess Information Layer====================================== 
     pst2.setString(1, txtClientID.getText()); 
     pst2.setString(2, (String) comboMarket.getSelectedItem().toString().substring(0, 1)); 
     if(txtStallNo.getText().isEmpty()) 
      pst2.setString(3, null); 

     else 
      pst2.setString(3, txtStallNo.getText()); 
     pst2.setString(4, txtLocation.getText()); 
     if(txtBusinessNo.getText().isEmpty()) 
      pst2.setString(5, null); 
     else 
      pst2.setString(5, txtBusinessNo.getText()); 
     if(txtYearStarted.getText().isEmpty()) 
      pst2.setString(6, null); 
     else 
      pst2.setString(6, txtYearStarted.getText()); 
     pst2.setString(7, (String) comboOtherBusinessQuery.getSelectedItem().toString()); 
     if(txtMonthlyIncome.getText().isEmpty()) 
      pst.setString(8, null); 
     else 
      pst2.setString(8, txtMonthlyIncome.getText()); 
     pst2.setString(9, (String) comboCar.getSelectedItem().toString()); 
     pst2.setString(10, txtBrand.getText()); 
     pst2.setString(11, (String) comboMortgaged.getSelectedItem().toString()); 
     if(txtPBalance.getText().isEmpty()) 
      pst2.setString(12, null); 
     else 
      pst2.setString(12, txtPBalance.getText()); 
     pst2.execute(); 
     // System.out.println("Nasave ang sql2 ? : "+ pst2.execute()); 

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

    try 
    { 
     pst3 = conn.prepareStatement(sql3); 

     pst3.setString(1, txtClientID.getText()); 
     pst3.setString(2, (String) comboMerchandise.getSelectedItem().toString().substring(0, 1)); 
     if(txtValueOfStocks.getText().isEmpty()) 
      pst3.setString(3, null); 
     else 
      pst3.setString(3, txtValueOfStocks.getText()); 
     if(txtLowestSale.getText().isEmpty()) 
      pst3.setString(4, null); 
     else 
      pst3.setString(4, txtLowestSale.getText()); 
     if(txtAveSale.getText().isEmpty()) 
      pst3.setString(5, null); 
     else 
      pst3.setString(5, txtAveSale.getText());   
     pst3.execute(); 
     //System.out.println("Nasave ang sql3 ? : "+ pst3.execute()); 

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

    try 
    { 

     pst4 = conn.prepareStatement(sql4); 

     pst4.setString(1, txtClientID.getText()); 

     pst4.setString(2, (String) comboMarket.getSelectedItem().toString().substring(0, 1)); 
     pst4.setString(3, txtLoanAmount.getText()); 
     pst4.setString(4, txtStart.getText()); 
     pst4.setString(5, txtDailyPay.getText()); 
     if(txtExpiry.getText().isEmpty()) 
      pst4.setString(6, null); 
     else 
      pst4.setString(6, txtExpiry.getText()); 
     pst4.execute(); 
     // System.out.println("Nasave ang sql4 ? : "+ pst4.execute()); 

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

및 업데이트 :

여기 SAVE 내 코드의 ... t 작업,하지만 난 새로운 의뢰인에 대해 새로운 정보를 저장하는 경우 만 tblclient이 저장되고 난 업데이트하려고하면, 그것은 아무튼

cmdNewSpouse.setEnabled(false); 
    String sql = "delete from tblClientInfo where ClientID = ?"; 

    try 
    { 
     pst = conn.prepareStatement(sql); 
     pst.setString(1, txtClientID.getText()); 
     pst.execute(); 

     JOptionPane.showMessageDialog(null, "Deleted"); 
     UpdateJTable(); 
     clear(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
     JOptionPane.showMessageDialog(null, e); 
    } 
}          

    private void cmdUpdateMouseClicked(java.awt.event.MouseEvent evt)   
    {          
     // TODO add your handling code here: 
     String sql = "update tblClientInfo set LastName = ?, FirstName = ?, MiddleName = ?, Gender = ?, BirthPlace = ?, " 
      + "BirthDate = ?, Status = ?, ResAddress = ?, EmploymentQuery = ?, HomeNo = ?, ResidenceType = ? " 
      + "where ClientID = ?"; 

     String sql2 = "update tblBusinessInfo set StallNo = ?, " 
      + "MarketID = ?, Location = ?, BusinessTelNo = ?, YearStarted = ?, " 
      + "OtherBusinessQuery = ?, MonthlyIncome = ? , CarQuery = ?, CarBrand = ?, " 
      + "MortgagedQuery = ?, PBalance = ? where tblBusinessInfo.ClientID = ?"; 

     String sql3 = "update tblBusinessSituation set MerchandiseID = ?, StockValue = ?, " 
      + "LowestSale = ?, AverageSale = ? where tblBusinessSituation.ClientID = ?"; 

     String sql4 = "update tblledger set MarketID = ?, LoanAmount = ?, DateStarted = ?, DailyPay = ?, Expiry = ? " 
       + "where tblledger.ClientID = ?"; 
     try 
     { 
      pst = conn.prepareStatement(sql); 

      //===================================Client Information Layer======================================= 
      pst.setString(1, txtClientID.getText()); 
      pst.setString(2, txtLastName.getText()); 
      pst.setString(3, txtFirstName.getText()); 
      pst.setString(4, txtMiddleName.getText()); 
      pst.setString(5, (String) comboGender.getSelectedItem().toString()); 
      pst.setString(6, txtBirthPlace.getText()); 
      if(txtBirthDate.getText().isEmpty()) 
       pst.setString(7, null); 
      else 
       pst.setString(7, txtBirthDate.getText()); 
      pst.setString(8, (String) comboStatus.getSelectedItem().toString()); 
      pst.setString(9, txtAddress.getText()); 
      pst.setString(10, (String) comboEmploymentQuery.getSelectedItem().toString()); 
      if(txtHomeNo.getText().isEmpty()) 
       pst.setString(11, null); 
      else 
       pst.setString(11, txtHomeNo.getText()); 
      pst.setString(12, (String) comboResidency.getSelectedItem().toString()); 
      pst.execute(); 
      //System.out.println("Nasave ang sql ? : "+pst.execute()); 

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


     try 
     { 
      pst2 = conn.prepareStatement(sql2); 

      //===================================Buainess Information Layer====================================== 
      pst2.setString(1, txtClientID.getText()); 
      pst2.setString(2, (String) comboMarket.getSelectedItem().toString().substring(0, 1)); 
      if(txtStallNo.getText().isEmpty()) 
       pst2.setString(3, null); 

      else 
       pst2.setString(3, txtStallNo.getText()); 
      pst2.setString(4, txtLocation.getText()); 
      if(txtBusinessNo.getText().isEmpty()) 
       pst2.setString(5, null); 
      else 
       pst2.setString(5, txtBusinessNo.getText()); 
      if(txtYearStarted.getText().isEmpty()) 
       pst2.setString(6, null); 
      else 
       pst2.setString(6, txtYearStarted.getText()); 
      pst2.setString(7, (String) comboOtherBusinessQuery.getSelectedItem().toString()); 
      if(txtMonthlyIncome.getText().isEmpty()) 
       pst.setString(8, null); 
      else 
       pst2.setString(8, txtMonthlyIncome.getText()); 
      pst2.setString(9, (String) comboCar.getSelectedItem().toString()); 
      pst2.setString(10, txtBrand.getText()); 
      pst2.setString(11, (String) comboMortgaged.getSelectedItem().toString()); 
      if(txtPBalance.getText().isEmpty()) 
       pst2.setString(12, null); 
      else 
       pst2.setString(12, txtPBalance.getText()); 
      pst2.execute(); 
      // System.out.println("Nasave ang sql2 ? : "+ pst2.execute()); 

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

     try 
     { 
      pst3 = conn.prepareStatement(sql3); 

      pst3.setString(1, txtClientID.getText()); 
      pst3.setString(2, (String) comboMerchandise.getSelectedItem().toString().substring(0, 1)); 
      if(txtValueOfStocks.getText().isEmpty()) 
       pst3.setString(3, null); 
      else 
       pst3.setString(3, txtValueOfStocks.getText()); 
      if(txtLowestSale.getText().isEmpty()) 
       pst3.setString(4, null); 
      else 
       pst3.setString(4, txtLowestSale.getText()); 
      if(txtAveSale.getText().isEmpty()) 
       pst3.setString(5, null); 
      else 
       pst3.setString(5, txtAveSale.getText());   
      pst3.execute(); 
      //System.out.println("Nasave ang sql3 ? : "+ pst3.execute()); 

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

     try 
     { 

      pst4 = conn.prepareStatement(sql4); 

      pst4.setString(1, txtClientID.getText()); 

      pst4.setString(2, (String) comboMarket.getSelectedItem().toString().substring(0, 1)); 
      pst4.setString(3, txtLoanAmount.getText()); 
      pst4.setString(4, txtStart.getText()); 
      pst4.setString(5, txtDailyPay.getText()); 
      if(txtExpiry.getText().isEmpty()) 
       pst4.setString(6, null); 
      else 
       pst4.setString(6, txtExpiry.getText()); 
      pst4.execute(); 
      // System.out.println("Nasave ang sql4 ? : "+ pst4.execute()); 

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

미리 도움을 주셔서 감사합니다.

답변

0

제공되는 코드가 약간 지저분하고 크기가 크므로 JTable 새로 고침/유효성 검사 및 propertyChange 리스너 메소드를 확인하십시오. DB에 새 항목을 추가 한 후에는 UI에 이벤트를 전송해야하며 코드를 작성하는 방식으로 JTable을 업데이트해야합니다.

+0

이 대답은 IMO ;-) 질문보다 훨씬 낫지는 않습니다. 가장 좋아하는 부분은 _JTable_ 새로 고침/유효성 검사/업데이트 된 것입니다. 잘못된 것입니다 : 테이블의 _tableModel_ – kleopatra

+0

에 동의해야합니다. 동의합니다 ... 중요한 점을 놓 쳤지만 ... 단지 설명하고 싶었습니다. JTable의 영향을받는 시나리오에서 나를 업데이트 해 주셔서 감사합니다. –

관련 문제