生成列名称行

时间:2013-10-16 21:50:11

标签: java jdbc

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

我了解如何在生成后添加它,但我如何实际生成它?

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

基本上是一排水平的列名,例如......

PropertyID卧室地址价格类型日期广告

我尝试了以下代码,但它只生成表数据而不是列名。

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);

}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);