如何将数据库中的表名显示为 JTable?



我想获取数据库中的所有表名并将其显示在JTable中。

它正在打印:

con =  DriverManager.getConnection("jdbc:h2:C:/SimpleGST/GST/INVOICES","sa","");
String[] types = {"TABLE"};
DatabaseMetaData metadata = con.getMetaData();
ResultSet resultSet = metadata.getTables(null, null, "%", types);
while (resultSet.next()) {
String tableName = resultSet.getString(3);
System.out.println(tableName);
table.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(resultSet));
}

它正在打印表名称,但不显示在表中。

while (resultSet.next()) 
{
String tableName = resultSet.getString(3);
System.out.println(tableName);
table.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(resultSet));
}

你有一个 while 循环,它不断用你读取的每一行数据替换模型。因此,上次尝试设置模型时,已读取 ResultSet 中的所有数据。

使用resultSetToTableModel(...)方法的要点是 将为您从结果集中读取所有数据并创建表模型。因此,不需要while循环。

您需要将上面的代码替换为一行代码:

table.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(resultSet));

编辑:

但它显示了太多其他列..我只想显示表格

然后,您需要手动创建表模型。代码如下所示:

Vector columnNames = new Vector();
columnNames.addElement("Table");
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
while (resultSet.next()) 
{
Vector row = new Vector();
row.addElement( resultSet.getString(3) );
model.addRow(row);
}
table = new JTable( model );
scrollPane.setViewportView( table );
Vector columnNames = new Vector();
columnNames.addElement("Table");
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
try{con = DriverManager.getConnection("your url");
String[] types = {"TABLE"};
DatabaseMetaData metadata = con.getMetaData();
ResultSet resultSet = metadata.getTables(null, null, "%", types);

while (resultSet.next()) 
{
Vector row = new Vector();
row.addElement( resultSet.getString(3) );
model.addRow(row);
}
table = new JTable(model  );
scrollPane = new JScrollPane( table );
scrollPane.setBounds(10, 11, 724, 639);
contentPane.add( scrollPane );
scrollPane.setViewportView(table);

感谢@camickr的代码。 没有你的帮助,我不会弄清楚这一点。 谢谢伙计

相关内容

  • 没有找到相关文章

最新更新