簡體   English   中英

將jTable與MySQL數據庫連接時,Java Net bean IDE 8.0中的數組越界異常

[英]Array Out Of Bounds exception in java net beans IDE 8.0 while connecting jTable with MySQL database

我有一個包含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);
}

任何幫助將不勝感激。

由於您從不更新循環內的rows ,因此while會一直持續下去,直到到達異常為止。

            while(rows>0)
            {
                tmodel.removeRow(0);
            }

當然, setRowsCount()會更簡單,並且更不會出錯。

順便說一句:如果您指出哪一行是引發異常的行,對您的幫助會更加容易。

您的問題出在這部分,盡管它是一個相對簡單的解決方法:

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

您想要做的是:

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

因為您正在將變量設置為方法返回的常量值,這意味着在繼續刪除行時不會對其進行更新

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM