2013-01-11 58 views
0

我填入jTable 並將其與jButtonjbBuscarActionPerformed填充。它第一次按預期工作,但是當價值被改變(第二次)時,它不起作用。使用JButton填充JTable只能在第一次運行

我對按鈕的代碼是:

private void jbBuscarActionPerformed(java.awt.event.ActionEvent evt) {           
     //get data from database 
     clsDBBusca dbengine2 = new clsDBBusca(); 
     try { 
      data2 = dbengine2.getBusqueda(); 
     } catch (Exception ex) { 
      Logger.getLogger(clsCodif2.class.getName()).log(Level.SEVERE, null, ex); 
     } 

     //create header for the table 
     header2 = new Vector<String>(); 
     header2.add("Cve"); //Cve 
     header2.add("Descripcion"); // Caracteristica Principal 

     jtBusqueda.setModel(new javax.swing.table.DefaultTableModel 
      (
       data2, header2 
      ) 
     initComponents(); 

    } 

    public Vector getBusqueda()throws Exception 
     { 
      Vector<Vector<String>> resultadoVector = new Vector<Vector<String>>(); 

      Connection conn = dbConnection(); 
      PreparedStatement pre = conn.prepareStatement("SELECT Clave_Nueva, Descripcion_Especificaciones FROM famMat_Especificaciones WHERE Descripcion_Especificaciones like '%" + jtBuscaTexto.getText() + "%'"); 

      ResultSet rs = pre.executeQuery(); 

      while(rs.next()) 
      { 
       Vector<String> resultado = new Vector<String>(); 
       resultado.add(rs.getString(1)); //Cve 
       resultado.add(rs.getString(2)); //Descripcion de la busqueda 
       resultadoVector.add(resultado); 
      } 

      /*Close the connection after use (MUST)*/ 
      if(conn!=null) 
      conn.close(); 

      return resultadoVector; 

    } 
+1

注意:您沒有使用準備好的語句,他們應該被使用的方式。閱讀[這裏](http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)。你在做什麼在安全角度上是潛在的危險,這就是爲什麼我提到它:) – kentcdodds

+1

你的'initComponents();'調用一個Netbeans爲你生成的自動生成的方法嗎?如果是這樣,它不會做你認爲正在做的事情。如果不是,那是幹什麼的? – kentcdodds

+0

糟糕的代碼風格。如果您在英文網站上請求幫助,您還應該編寫英文代碼。 – Stephan

回答

0

嘗試添加

jtBusqueda.repaint(); 
+0

不需要。 – trashgod