2016-03-07 57 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