0

我正在使用以下代码仅获取 mysql 表的列表并将它们添加到 JComboBox。但我得到的只是 JComboBox 中的“[]”!请帮帮我

ArrayList<String> tables = new ArrayList<String>();

public ArrayList<String> tablesArray() throws SQLException
{


    ResultSet result = connecting.getMetaData().getCatalogs();

    while(result.next())
    {
        tables.add(result.getString(0));
    }

    return tables;

}

public JComboBox comboBox()
{


    JComboBox<ArrayList> combo = new JComboBox<ArrayList>();

    combo.addItem(tables);
    combo.setBounds(130,30,190,30);

    return combo;
}
4

5 回答 5

2

ArrayList 表 = 新的 ArrayList();

是包含一个或多个项目的数组

combo.addItem(表);

后来您将 am 数组添加为 Item,然后输出可能是正确的

  • 将数组作为构造函数传递,更多请参见JComboBox API 构造函数摘要

  • 最好创建一个 DefaultComboBoxModel (请参阅我的 API)并将这些项目从 ResultSet 直接添加到模型

于 2013-07-17T07:28:53.757 回答
0

这是将数据库的所有表检索到 JComboBox 中的完整代码:

public JComboBox<String> comboBox() throws SQLException
{
    ResultSet rs = connecting.getMetaData().getTables(null, null, "%", null);

    ResultSetMetaData meta = (ResultSetMetaData) rs.getMetaData();

    int columns = meta.getColumnCount();

    while(rs.next())
    {

            String table_names = rs.getString("TABLE_NAME");
            combo.addItem(table_names);
    }

    combo.setBounds(130,30,190,30);
    combo.setSelectedIndex(0);
    combo.setMaximumRowCount(5);
    return combo;
}
于 2013-07-20T20:07:20.570 回答
0

尝试以下

while(result.next())
{
    tables.add(result.getString(1));
}

有关更多信息,请参阅此问题:How to check if a specific database in mysql has already exists using java or this one how to get the list of Databases "Schema" names of MySql using java JDBC

但是我有点困惑你在寻找数据库名称吗?或者您是否正在尝试查找表名?

使用 MySQL 时,您始终可以查询 information_Schema 视图以获取有关表、数据库列等的 LOADS 信息。

于 2013-07-17T06:57:30.040 回答
0

getCatalogs()方法返回目录名称,而不是表名称。我不确定它会在 MySQL 上做什么,因为 AFAIK MySQL 没有目录。

如果您调用DatabaseMetaData.getTables(...)并使用null第一个参数,catalog它应该为您提供所有表名,而不会将结果缩小到任何目录。

于 2013-07-17T07:01:59.807 回答
0

你应该试试这个

ResultSetMetaData meta = (ResultSetMetaData) rs.getMetaData();
int columns = meta.getColumnCount();
while(rs.next()){
for(int i =1; i<=columns; i++){
String yourValues = rs.getString(i);
theCombo.addItem(yourValues);
//rs is the result set for the executed query.
}

于 2013-07-17T10:16:47.143 回答