JTable错误:java.lang.ArrayIndexOutOfBoundsException:1> = 0

时间:2014-04-07 18:35:05

标签: java mysql swing jtable indexoutofboundsexception

我在Java Swing中创建了一个 JTable

如何更新它以显示存储在MySQL数据库中的所有值?

我尝试在网上搜索,但仍然没有运气。

这是我的代码......

    try{
        PreparedStatement ps = con.prepareStatement("SELECT * FROM Users ");
        ResultSet result = ps.executeQuery();
        while(result.next()){
            salesTable.setValueAt(result.getString("users"), 1, 1);
        }
    }
    catch(SQLException sqle){
        sqle.printStackTrace();
    }

我一直收到java.lang.ArrayIndexOutOfBoundsException: 1 >= 0错误。

如果有人能告诉我出错的地方以及可能解决这个错误,我将不胜感激。

3 个答案:

答案 0 :(得分:4)

此方法调用
result.getString(name)
期望列的名称,而不是表的名称。

可能是你的困惑来自哪里。

您需要遍历所有列 为每个人命名并调用此方法。

此外,ArrayIndexOutOfBoundsException
来自salesTable而不是来自ResultSet。

查看这两项,您应该可以解决此问题。

答案 1 :(得分:2)

salesTable.setValueAt(result.getString("users"), 1, 1);

我猜你有一个空的TableModel。

您不能仅使用setValueAt(...)方法将数据添加到TableModel。 setValueAt(...)方法用于更新模型中的现有数据。这意味着行和列必须已存在于TableModel中。

要向TableModel添加新数据,您需要使用DefaultTableModel的addRow(...)方法。

请参阅Table From Database中的Table From Database Example.java代码。它将为您提供如何从ResultSet动态加载TableModel的示例。

答案 2 :(得分:0)

一开始,您要清理并填写jTable,请将其放置:

dtm.setRowCount(0);

dtm是关于jTable的模型。这样做是在每次填充之前清理模型。