0

我将如何生成由 Table 中的列名组成的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);

}
4

2 回答 2

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

谷歌搜索结果集元数据找到了这个示例代码

于 2013-10-16T22:07:47.340 回答
0

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

            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); 
于 2013-10-16T22:36:53.547 回答