如何在数据库中显示表名到JTable?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在数据库中显示表名到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(...)方法的目的是为您读取ResultSet中的所有数据并创建TableModel。所以不需要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的代码。没有你的帮助,我不会想到这一点。谢啦

以上是关于如何在数据库中显示表名到JTable?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单击JButton后刷新JTable

如何在jTable中读取和搜索文件?

如何在 JTable 中显示 MySQL 中的数据

如何即时将表名解析为 Parquet?

如何更改Jtable中的数据并且更新到数据库中?

如何将数据库中的所有记录显示到 JTable?