try{
    ArrayList al0;
    rs=DBConnection.queryOldTable(strsql);
    ResultSetMetaData rsmd=rs.getMetaData();
    int cc=rsmd.getColumnCount();
    System.out.println(cc);
    while (rs.next()){
byte j=1;
System.out.println(rs.getString(j));
j=2;
System.out.println(rs.getString(j));
j=3;
System.out.println(rs.getString(j));
j=4;
System.out.println(rs.getString(j));
al0=new ArrayList();
for (byte i=1;i<=11;i++){ //把每一行放入ArrayList,然后再放入al
    System.out.print(i+"=");
    System.out.println(rs.getString(i));        这里报“无效的描述符索引”异常
    al0.add(rs.getString(i)==null?"-":rs.getString(i));    没有上面那句代码,就在这里报“无效的描述符索引”异常 }
al.add(al0);
    }
}catch(){....}上面这段代码,今天足足把我郁闷了一整天,还解决不了。用“直连”方式链接数据库,没有问题。
但公司的服务器里面的数据库,死活用不了“直连”方式,只好用“桥连”了。
但没想到上面这段代码,居然又用“桥连”就报“无效的描述符索引”这个异常。
但奇怪的是,这是在循环里面产生异常,而在循环外面(大家可以看到我加的那些测试代码),居然又没有一点问题。
真的就要被气S。
麻烦大家提点一下。

解决方案 »

  1.   


    byte j=1;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    j++;
    System.out.println(j+"="+rs.getString(j));
    for (int k=2;k<6;k++)
    System.out.println(rs.getString(k));改成这样了,居然还是在最后那一行报那个“无效的描述符索引”异常。
    其实前面的12*2行代码,跟循环又有什么区别呢?
    唉,我快疯掉了。
      

  2.   

    搞掂了,不好意思,浪费CSDN的资源了。
    起源全因为我原来的代码里面有这样一句:
    al0.add(rs.getString(i)==null?"-":rs.getString(i));这句代码在直连时没有问题,但在桥连的时候就出问题了,因为前面的rs.getString(i)已经用了那个序号了,后面就不能再用了。
    后来我又加上了一些测试语句,反而更加重了问题的产生。
    因为rs.getString(j)原来已经去到11了,但rs.getString(i)又从头开始,所以就报错了。
    但直连却无所谓。
    唉,一天,一天就这样过了。