请问大家把 ResultSet 的信息转换到数组一般是怎么操作的?因为数组的元素数要根据 ResultSet 的行数决定,所以我一般是先 rs.last(); 得到行数确定数组大小,然后再 rs.beforeFirst(); 但这样做 ResultSet 类型就不能是 ResultSet.TYPE_FORWARD_ONLY,会影响速度。如果通过 select count(*) 得到行数又麻烦点,也会增加一点开销。也就是说,如果数组元素数能改变并且保留已有元素值就好了,每 next() 一次就增加一个元素。我用 VB 时通过 ReDim Preserve 实现的,delphi 也可以通过 setLeng() 实现,我对 java 不大了解,不知怎么实现的,希望大家指点。谢谢!

解决方案 »

  1.   

    I think that you had better use vector to substitute array. It's easy way to solve the problem, and you don't care how to allocate new free space, because vector can automatically do it:-)
      

  2.   

    ArrayList or Vector, ---- dynamic array
    eg: ArrayList list = new ArrayList();
    while ( rs.next()) {
       list.add(rs.getString(1));
    }
      

  3.   

    用ArrayList如果你的程序没有线程安全问题,这样速度要比Vector快
      

  4.   

    我是楼主。
    我也用过Vector,没用过ArrayList,觉得Vector比用数组麻烦了一点点,如使用时一般是:
    classA a = (classA)v.elementAt(i);
    a.method1();
    a.method2();
    而用数组则只要用a[i].method1();a[i].method2();就行了,并且我估计开销也少点。
    不过也没麻烦多少,既然大家都这么用,那我就不那么苛求了,只是以前用惯数组而已。