java - 将 jTable 与 MySQL 数据库连接时,java net beans IDE 8.0 中出现数组越界异常

标签 java mysql arrays jtable database-connection

我有一个包含 7 列的表,我正在尝试将我的数据库与其连接,以便从数据库接收数据并将其显示在表中。当您第一次按下按钮时,代码工作正常,但当您第二次按下按钮时,表格变为空白,并且我收到此错误:

java.lang.ArrayIndexOutOfBoundsException: 0 >= 0

我在下面给出了按钮的 ActionPerformed 方法的代码。

try
{
    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name","root","admin123");
    String query="SELECT * FROM tablename;";
    Statement st = con.createStatement();
    ResultSet rs= st.executeQuery(query);


    DefaultTableModel tmodel = (DefaultTableModel) jTable1.getModel();


    int rows=tmodel.getRowCount();
    while(rows>0)
    {
        tmodel.removeRow(0);
    }
    jTable1.setModel(tmodel);

while(rs.next())
{

    tmodel.addRow(new Object[] {rs.getInt("column1"),rs.getString("Column2"),rs.getString("Column3"),rs.getInt("Column4"),rs.getString("Column5"),rs.getString("Column6"),rs.getString("Column7")});
    jTable1.setModel(tmodel);
}

}
catch(Exception ex)
{
    System.out.println("Eception: "+ex);
}

任何帮助将不胜感激。

最佳答案

您的问题出在这部分,尽管它是一个相对简单的修复:

            int rows=tmodel.getRowCount();
            while(rows>0)
            {
                tmodel.removeRow(0);
            }
            jTable1.setModel(tmodel);

你想做的是:

            while(tmodel.getRowCount()>0)
            {
                tmodel.removeRow(0);
            }
            jTable1.setModel(tmodel);

因为您将变量设置为该方法返回的常量值,这意味着当您继续删除行时它不会更新

关于java - 将 jTable 与 MySQL 数据库连接时,java net beans IDE 8.0 中出现数组越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23813626/

相关文章:

java - java 方法的某种扩展

php - 来自 MYSQL 的值变为空

php - 为什么我的 Moodle 查询在 "Ad hoc database queries"中有效,但在我的插件中却无效?

sql - 应该独立的子查询不是。为什么?

c - 使用 scanf 传递未知数量的整数

java - 删除中点后移动数组中的数字

java - 交换内存不足

java - 如何在 WebView Android Studio 中打开本地 pdf 文件

c# - 如何以编程方式确定我的处理器类型?

javascript - 具有特定变量的唯一 ID,以便使用该变量调用数组中的函数