[英]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.