2016-10-11 4 views
-1

Я пытаюсь заполнить данные в JTable с помощью базы данных MySQL с помощью функции addRow, но так или иначе она не работает. Данные не заполняются в модели таблицы. Я делюсь своим кодом, пожалуйста, помогите мне с этим,Невозможно добавить строку в таблицу по умолчанию

inventoryTable = new JTable(); 


     String showquery="select * from sample.inventory where parts='BSP'"; 
     PreparedStatement showPst; 

     DefaultTableModel showTable=new DefaultTableModel(); 
     inventoryTable.setModel(showTable); 
     try{ 
      showPst=connect.prepareStatement(showquery); 
      //showPst.setString(2, "BSP"); 
      ResultSet showrs=showPst.executeQuery(); 
      ResultSetMetaData meta=(ResultSetMetaData) showrs.getMetaData(); 
      String[] rowdata=new String[2]; 
     while(showrs.next()){ 
       rowdata[0]=showrs.getObject(2)+" "+showrs.getObject(3)+" "+showrs.getObject(5)+" "+showrs.getObject(8)+" "+showrs.getObject(7); 
       rowdata[1]=(String) showrs.getObject(15); 

       showTable.addRow(rowdata); 
     } 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     inventoryTable.setModel(showTable); 
     showTable.fireTableDataChanged(); 
    inventoryTable.setBounds(62, 0, 489, 306); 
    panel.add(inventoryTable); 
} 

ответ

2

Таблица имеет строки и столбцы. Немного простой отладка мог бы показать вам, что ваша модель таблицы нет столбцов:

public static void main(String[] args) { 
    DefaultTableModel tableModel = new DefaultTableModel(); 
    tableModel.addRow(new Object[]{"Test", "Test"}); 
    System.out.println(tableModel.getRowCount());//returns 1 
    System.out.println(tableModel.getColumnCount());//returns 0 
    } 

Пока таблица имеет нулевые столбцы, не будет отображаться никаких данных. Вы можете, например, использовать конструктор

public DefaultTableModel(Vector columnNames, int rowCount) 

указать имена столбцов.