为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

FFIVE 2021-08-25 15:29:22
我想获取数据库中的所有表名并将其显示在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));}它正在打印表名,但没有显示在表中。
查看完整描述

2 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

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


查看完整回答
反对 回复 2021-08-25
?
青春有我

TA贡献1784条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 208 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信