我定义了一个未知长度的数组:String[] name = new String[]{};
想将数据库中查到的数据赋给这个数组:
for(i = 0;rs.next();i++){
name[i] = rs.getString(1);
}
可是报错:
严重: Exception occurred during processing request: 0
java.lang.ArrayIndexOutOfBoundsException: 0
显示的是: “name[i] = rs.getString(1);”这里出错。为什么?怎么改?
String[] name = new String[]{};
这样定义数组它的实际长度为0 所以你调用name[0]的时候就已经是数组越界了
你可以打印一个name.length看看就知道了
建议你用List<String> name = new ArrayList<String>();来接收,如果必须用数组的话, 可以将list转换成数组
追问
我不止赋值给一个数组,我的结果集有两列结果,赋值如下:
for(i = 0;rs.next();i++){
name[i] = rs.getString(1);
age[i]=rs.getString(2);
}
age数组的创建方法和name是一样的,name和age也是对应的。这样就没法用list了吧?
那就封装成一个对象
class A {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
List list = new ArrayList();
然后在这里
for(i = 0;rs.next();i++){
A a = new A();
a.setName(rs.getString(1));
a.setAge(age[i]=rs.getString(2));
list.add(a);
}
这只是一个思路
这个思路我想过,可是我还得把这些数据和我页面的数据做对比……
我想做的东西是:在页面中得到一组名字与其对应的年龄,与数据库中的数据做对比,如果有重复的就更改对应的年龄,不重复的添加入在数据库中。所以……
你页面传过来的一们放到List list2 中 然后用for循环比较啊
好像rs.getRow()方法得到的是当前的行数,而不是总行数吧?
我通过rs.last()方法,然后int length = rs.getRow();得到总行数。
可是,我想重新得到该结果集的数据怎么办?
用rs.first();还是rs.beforeFirst()?