当我想创建一个新的ActinPerformed时,它的代码正在另一个ActinPerform中写入



当我点击右键并想添加我的actionperformed时,这是我的问题,我看到这是旧actionPerformed中的代码os

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

//在这里你可以看到我的新动作执行在旧的里面

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

天哪。有人告诉过你,复制代码是编程中所有邪恶的根源吗?!

例如,将它们与试块进行比较。唯一的区别是您在SQL语句中使用的字符串。其他的都是。。。都一样。您永远不会那样做。相反,您编写了一个助手方法,该方法对UI元素一无所知(可能除了要更新的模型)。

换句话说:您可以创建一个实用程序类,让DB为您工作;而您的动作监听器只需调用相应的方法,提供所需的参数。

您知道,这也将使您能够单独测试您的代码。然而,在你的方法中,你把所有的东西都塞进一块大石头里;这几乎是不可能测试的。相信我:如果这是一个"真实世界"的项目,那么你将要创建一些绝对不可维护的东西,这将是你问题的持续来源。其理念是在产品中创建;一个用于UI,一个用于"业务逻辑";其他人则表示"基础设施"(如处理数据库)。

说真的:在犯下更多这样的代码罪行之前,你可能想研究一下"干净的代码",或者"如何做好的OO设计"。

相关内容

  • 没有找到相关文章