2016-07-18 12 views
0
writting

hier ist mein Problem, wenn ich mit der rechten Taste klicken, und ich will meine hinzufügen actioPerformed ich sehe, dass ist die Code-os in einem alten actionPerformed, wenn ich einen neuen ActinPerformed seinen Code erstellen möchten befindet sich in einem anderen 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); 

    } 

}           

// hier können Sie meine neue actionPerformed sehen in der alte ist

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); } 
    } 

Antwort

0

Oh mein. Hat dir jemand jemals gesagt, dass duplizieren Code ist die Wurzel allen Übels in der Programmierung ?!

Vergleichen Sie diese zu versuchen Blöcke zum Beispiel. Der einzige Unterschied ist der String, den Sie für Ihre SQL-Anweisung verwenden. Alles andere ist ... egal. Sie nie jemals das tun. Stattdessen schreiben Sie eine Hilfsmethode, die nichts über UI-Elemente kennt (möglicherweise außer dem Modell, das aktualisiert werden soll).

Mit anderen Worten: Sie könnten eine Dienstprogrammklasse erstellen, die die DB für Sie arbeiten lässt; und Ihre Aktionslistener rufen einfach die entsprechenden Methoden auf und stellen die erforderlichen Parameter bereit.

Sie wissen, dass Sie auch Test Ihren Code separat aktivieren können. Während du in deinem Ansatz alle Dinge zu einem großen Monolith zusammenfüllst; Das ist fast unmöglich zu testen. Und glauben Sie mir: Wenn es sich um ein "real world" -Projekt handelt, dann sind Sie im Begriff, etwas zu schaffen, das absolut nicht wartbar ist und für Sie eine ständige Quelle von Problemen sein wird. Die Idee ist, dass Sie in Ihrem Produkt Schichten erstellen; eine für die Benutzeroberfläche, eine für die "Geschäftslogik"; andere für "Infrastruktur" (wie den Umgang mit Datenbanken).

Ernsthaft: Sie könnten Dinge wie "sauberen Code" oder "wie man gute OO-Designs macht" studieren, bevor Sie weitere solche Code-Verbrechen begehen.