2013-10-16 54 views
0

我将如何生成由SQL表中的列名组成的表并将其添加到JFRAME/JPANEL生成列名称行

我知道如何添加一次我有它产生的,但实际上,我怎么产生的呢?

表称为属性,所以我期待select * columnames from properties并生成JTable,然后我可以将其添加到JPANEL

基本的COLUMNNAMES例如,水平行...

物业ID卧室地址价格类型日期刊登

我曾尝试下面的代码,但它仅生成表中的数据,而不是列名。

public static DefaultTableModel buildTableModel(ResultSet rs) 
     throws SQLException { 

    ResultSetMetaData metaData = (ResultSetMetaData) rs.getMetaData(); 

    // names of columns 
    Vector<String> columnNames = new Vector<String>(); 
    int columnCount = metaData.getColumnCount(); 
    for (int column = 1; column <= columnCount-1; column++) { 
     columnNames.add(metaData.getColumnName(column)); 
    } 



    // data of the table 
    Vector<Vector<Object>> data = new Vector<Vector<Object>>(); 
    while (rs.next()) { 
     Vector<Object> vector = new Vector<Object>(); 
     for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) { 
      vector.add(rs.getObject(columnIndex)); 
     } 
     data.add(vector); 
    } 

    return new DefaultTableModel(data, columnNames); 

} 

回答

1

结果集元数据包含列名信息。

// Get the metadata 
    ResultSetMetaData md = rs.getMetaData() ; 

    // Print the column labels 
    for(int i = 1; i <= md.getColumnCount(); i++) 
    System.out.print(md.getColumnLabel(i) + " ") ; 
    System.out.println() ; 

谷歌搜索结果集元数据中找到此example code

0

这似乎把工作中单独设置它们完成。可以用数组和循环来清理。

  columnNames.getColumnModel().getColumn(0).setPreferredWidth(100); 
      columnNames.setValueAt("PropertyID", 0, 0); 
      columnNames.getColumnModel().getColumn(1).setPreferredWidth(50); 
      columnNames.setValueAt("Beds", 0, 1); 
      columnNames.getColumnModel().getColumn(2).setPreferredWidth(350); 
      columnNames.setValueAt("Address", 0, 2); 
      columnNames.getColumnModel().getColumn(3).setPreferredWidth(101); 
      columnNames.setValueAt("Price", 0, 3); 
      columnNames.getColumnModel().getColumn(4).setPreferredWidth(101); 
      columnNames.setValueAt("Type", 0, 4); 
      columnNames.getColumnModel().getColumn(5).setPreferredWidth(101); 
      columnNames.setValueAt("Parking", 0, 5); 
      columnNames.getColumnModel().getColumn(6).setPreferredWidth(101); 
      columnNames.setValueAt("Condition", 0, 6); 
      columnNames.getColumnModel().getColumn(7).setPreferredWidth(100); 
      columnNames.setValueAt("Agent", 0, 7); 
      columnNames.getColumnModel().getColumn(8).setPreferredWidth(100); 
      columnNames.setValueAt("Show", 0, 8); 
      columnNames.getColumnModel().getColumn(8).setPreferredWidth(101); 
      columnNames.setValueAt("Ad Date", 0, 9);