【问题标题】:JTable error: java.lang.ArrayIndexOutOfBoundsException: 1 >= 0JTable 错误:java.lang.ArrayIndexOutOfBoundsException:1 >= 0
【发布时间】:2014-05-20 03:58:20
【问题描述】:

我在 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 错误。

如果有人能告诉我哪里出错并可能解决此错误,我将不胜感激。

【问题讨论】:

  • 您在哪一行得到 ArrayIndexOutOfBoundsException。你可以添加堆栈跟踪吗?

标签: java mysql swing jtable indexoutofboundsexception


【解决方案1】:

在开始时,您将清理和填充您的 jTable,放置:

dtm.setRowCount(0);

dtm 是关于 jTable 的模型。它的作用是在每次填充之前清洁您的模型。

【讨论】:

    【解决方案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 的示例。

    【讨论】:

      【解决方案3】:

      这个方法调用
      result.getString(name)
      需要列名,而不是表名。

      你的困惑可能来自于此。

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

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

      查看这两个项目,您应该能够解决此问题。

      【讨论】:

        猜你喜欢
        • 2014-04-03
        • 1970-01-01
        • 1970-01-01
        • 2021-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-30
        • 1970-01-01
        相关资源
        最近更新 更多