如何生成由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);
}
答案 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);