ps=dbc.getConnection().prepareStatement(sql);
ResultSet rs=ps.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int num=rsmd.getColumnCount();
String row[];
while(rs.next()){
row=new String[]{}; for(int i=1;i<num+1;i++){
row[i]=rs.getString(i);
}
java.lang.ArrayIndexOutOfBoundsException: 1
at com.Member.MemberDAOIm.Selectall(MemberDAOIm.java:50) 我把i=0还是错? 怎么改
at com.Member.MemberDAOIm.main(MemberDAOIm.java:71)
[Ljava.lang.String;@1ff0dde
ResultSet rs=ps.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int num=rsmd.getColumnCount();
String row[];
while(rs.next()){
row=new String[]{}; for(int i=1;i<num+1;i++){
row[i]=rs.getString(i);
}
java.lang.ArrayIndexOutOfBoundsException: 1
at com.Member.MemberDAOIm.Selectall(MemberDAOIm.java:50) 我把i=0还是错? 怎么改
at com.Member.MemberDAOIm.main(MemberDAOIm.java:71)
[Ljava.lang.String;@1ff0dde
这里应该有问题:下标从0开始的话,假如总共有5列,你这样5<5+1,会取到rs.getString(5),实际只取到rs.getString(4),所以越界。
如果你从1开始循环,一样的会5<5+1,会越界,你改变的只是开始位置,所以应该不要+1吧。
你试试先吧
ps=dbc.getConnection().prepareStatement(sql);
ResultSet rs=ps.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int num=rsmd.getColumnCount();
List<List<String> > row= new ArrayList<List<String> >();//String row[];
while(rs.next()){
row.add(new ArrayList<String>());//row=new String[]{};for(int i=1;i<num+1;i++){
row.get(i-1).add(rs.getString(i));}要不你试下改成这样?