2016-03-07 52 views
0

所以我剛開始製作一個示例項目,我可以在哪裏插入連接到數據庫的Employee和Department。當我嘗試在我的字段中插入一些值時。點擊按鈕「添加」後,標題或列隱藏。任何幫助將不勝感激!插入後,JTable隱藏了標頭

String inputEmployee = employeeTf.getText(); 
    String inputDepartment = departmentTf.getText(); 

    if(inputEmployee.isEmpty() && inputDepartment.isEmpty()){ 
     JOptionPane.showMessageDialog(null, "Please fill up!"); 
    } 
    else if(inputEmployee.isEmpty()){ 
     JOptionPane.showMessageDialog(null, "Employee Name should not be left blank"); 
    } 
    else if(inputDepartment.isEmpty()){ 
     JOptionPane.showMessageDialog(null, "Department should not be left blank"); 
    } 
    else{ 
     DefaultTableModel model = new DefaultTableModel(); 
     jTable.setModel(model); 
     Object[] row = new Object[2]; 

     String myQuery = "INSERT INTO SAMPLE (EMPLOYEENAME,DEPARTMENT) VALUES (?,?)"; 

     try{ 
      Connection myCon = DBUtilities.getConnection(DBType.JDBC); 
      PreparedStatement myPs = myCon.prepareStatement(myQuery); 

      myPs.setString(1, employeeTf.getText()); 
      myPs.setString(2, departmentTf.getText()); 

      row[0] = employeeTf.getText(); 
      row[1] = departmentTf.getText(); 

      myPs.executeUpdate(); 

      System.out.print("Record is inserted"); 


     } catch (SQLException ex) { 
      DBUtilities.processException(ex); 
     }  
     finally { 
     try { 
      if(myPs != null) myPs.close(); 
      if(myCon != null) myCon.close(); 
     } catch (SQLException e) { 
      System.out.println("Error is: " + e.getMessage()); 
     } 
    } 

enter image description here

當我嘗試在員工字段和BSIT在部門字段中插入約翰。標題消失。

enter image description here

正如你可以在這裏看到的標頭/列消失。我錯過了什麼?謝謝

+0

當你從數據庫更新時,你創建一個新的'DefaultTableModel',但你永遠不會在模型中添加任何列 – MadProgrammer

+0

@MadProgrammer是否需要爲我的列創建一個對象? Object [] columns = {「Name」,「Department」}; 我拖放這個組件是否需要調用列? – Francisunoxx

+0

閱讀[DefaultDableModel的JavaDocs](https://docs.oracle.com/javase/8/docs/api/javax/swing/table/DefaultTableModel.html),但基本上是 – MadProgrammer

回答

1
DefaultTableModel model = new DefaultTableModel(); 
    jTable.setModel(model); 

您創建一個沒有任何列的新的TableModel。不要創建一個新的TableModel。

,而不是僅僅使用當前的TableModel從JTable的(因爲它已經包含了列名)來添加新的數據行:

//DefaultTableModel model = new DefaultTableModel(); 
//jTable.setModel(model); 
DefaultTableModel model = (DefaultTableModel)tTable.getModel(); 

然後,當你的數據,你可以更新表更新數據庫與此同時。

myPs.executeUpdate(); 
model.addRow(row); 

當然,這裏假設您實際上首先使用DefaultTableModel創建了JTable。

+0

謝謝!你有我的問題兄弟。我有一個問題,我會在我的參數上添加什麼。 model.add(row); //我將在我的參數中放入什麼? – Francisunoxx

+0

我不明白這個問題。你讀過'DefaultTableModel' API嗎? 'addRow(...)'方法需要一個Vector或一個數組作爲參數。您已將行變量定義爲數組,並將兩個值添加到數組中。那麼你爲什麼不使用它呢? – camickr

+0

感謝兄弟已經在工作。我只是添加model.addRow(新對象[] {employeeTf。的getText(),departmentTf.getText()});.但它沒有加載到數據庫?再次感謝 – Francisunoxx