2016-07-18 2 views
0

내부에는 writting되고 여기에 내가 오른쪽 버튼을 클릭하면 내 문제이며 내가 추가 할 내 actioPerformed 내가 그 옛날의 actionPerformed타 ActinPerformed

private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) { 
     Connection cx ; 
     PreparedStatement psd ; 
     ResultSet stt=null ; 
     String url="jdbc:derby://localhost:1527/Dacia"; 
     String usr="daciasys" ; 
     String pswd="daciasys" ; 

    if(jComboBox2.getSelectedItem().equals("tous")) { 

    try{ 
     cx=DriverManager.getConnection(url, usr, pswd); 
     String sql="SELECT * FROM CHASIS"; 

     psd=cx.prepareStatement(sql); 
     stt=psd.executeQuery(); 
     jTable2.setModel(DbUtils.resultSetToTableModel(stt)); 


    } catch (SQLException ex) { 
     JOptionPane.showMessageDialog(null,ex.getMessage(),"Renault Dacia ERRCHIDIA",0); 

    } 

}           
내부의 코드 OS입니다 참조

// 여기 내 새의 actionPerformed 내 아 이전

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
}           
else if(jComboBox2.getSelectedItem().equals("par position")) 
{ 
     try{ 

      cx=DriverManager.getConnection(url, usr, pswd); 
      String sql="SELECT * FROM CHASIS where position=?" ; 
      psd=cx.prepareStatement(sql); 
      psd.setString(1,jTextField5.getText()); 
      stt=psd.executeQuery(); 
      jTable2.setModel(DbUtils.resultSetToTableModel(stt)); 


     }catch(SQLException ex) 
     {JOptionPane.showMessageDialog(null,ex.getMessage(),"Renault Dacia ERRCHIDIA",0); } 
    } 
else if(jComboBox2.getSelectedItem().equals("par marque")) 
    { 
     try{ 

      cx=DriverManager.getConnection(url, usr, pswd); 
      String sql="SELECT * FROM CHASIS where marque=?" ; 
      psd=cx.prepareStatement(sql); 
      psd.setString(1,jTextField5.getText()); 
      stt=psd.executeQuery(); 
      jTable2.setModel(DbUtils.resultSetToTableModel(stt)); 


     }catch(SQLException ex) 
     {JOptionPane.showMessageDialog(null,ex.getMessage(),"Renault Dacia ERRCHIDIA",0); } 
    } 

답변

0

안에 볼 수 있습니다. 아무도 코드를 복제하는 것이 프로그래밍의 모든 악의 근원이라고 말하지 않았습니까?

예를 들어 블록을 시도해보십시오. 유일한 차이점은 SQL 문에 사용중인 문자열입니다. 다른 건 ... 같은거야. 너 도 절대 할. 대신 을 알고있는 도우미 메서드를 작성하면 UI 요소에 대해 (업데이트 할 모델 제외)이 표시되지 않을 수 있습니다.

즉, DB 작업을 수행하는 유틸리티 클래스를 만들 수 있습니다. 액션 리스너는 필요한 매개 변수를 제공하여 해당 메서드를 호출하기 만하면됩니다.

코드를 별도로 입력 할 수도 있습니다. 반면에, 당신의 접근 방식에서, 모든 것을 하나의 거대한 단일체로 채우는 것; 그것은 거의 테스트 불가능합니다. 그리고 저를 믿으십시오 : 이것이 "실세계"프로젝트라면, 당신은 절대적으로 유지 보수 할 수없는 무언가를 창조하려고합니다. 그리고 당신을위한 지속적인 문제의 근원이 될 것입니다. 즉, layers을 (를)라고합니다. 하나는 UI 용이고 하나는 "비즈니스 로직"용입니다. "인프라"(데이터베이스 다루기)를위한 다른 것들.

진지하게 : 그러한 코드 범죄를 저 지르기 전에 "깨끗한 코드"또는 "좋은 OO 디자인을 수행하는 방법"과 같은 것을 공부할 수도 있습니다.

관련 문제