javaswing连接数据库遍历报错,报错显示数组越界,请问怎么解决,需要将数据库中的数值放在二维数组中,这个报错该怎么解决呢
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个错误提示表明你的程序在尝试访问一个超出数组索引范围的元素,导致程序崩溃。你需要检查你的代码,找出越界的地方并进行修正。
具体来说,可以检查以下几个方面:
根据您提供的代码和报错信息,出现问题的代码应该是在for循环内部的数组赋值语句。具体来说,应该是以下这行代码出现问题:
datal[count][01 = rs1.getstring("id user");
问题出在datal[count][01]这个数组索引上,它的值为0+1=1,然而您的数组定义是new String[count][9],也就是说索引的最大值应该是count-1,因此当count=1时,就会发生数组越界的异常。
解决方案是在for循环之前先初始化data1数组,然后将数组索引修改为count-1。具体来说,可以将代码修改如下:
String sql = "select * from regist";
psta = conn.prepareStatement (sql);
rs = psta.executeQuery ();
// 先遍历一遍结果集获取总记录数
while(rs.next()) {
count++;
}
// 初始化data1数组
String data1[][] = new String[count][9];
// 重新执行查询获取数据
rs1 = psta.executeQuery();
count = 0;
while(rs1.next()) {
data1[count][0] = rs1.getString("id_user");
data1[count][1] = rs1.getString("user_password");
data1[count][2] = rs1.getString("user_password1");
data1[count][3] = rs1.getString("user_sex");
data1[count][4] = rs1.getString("user_sport");
data1[count][5] = rs1.getString("user_sportl");
data1[count][6] = rs1.getString("user_sport2");
data1[count][7] = rs1.getString("user_from");
data1[count][8] = rs1.getString("user_area");
count++;
}
这样修改后,应该就能够正确地将数据库中的数据存放在data1数组中了。
目前for循环的数组是count,定义的数组最大到为count -1,所以数组越界了,该改为i,for循环的rs1.next()最好改为i<cout