要求:
以行代码完成下面的函数
 public String[][] selectExec(String sql)说得简单点 就是怎么把java.sql.ResultSet转换成String[][] 或者那位高手还有更好的方法。
也可以当成程序天空来做。先谢谢了!~~~
ps:顶的人运气好也会得到不同的分数哦。

解决方案 »

  1.   

    ResultSet rs;//结果集ResultSetMetaData  rsmd = rs.getMetaData();
    int col = rsmd.getColumnCount();
    int count = 0;
    while(rs.next()){count++;}
    String[][] result = new String[count][col];
    //重新执行sql,再次得到结果集 rs;
    for(int i=0 ;i<count;i++)
    {
        for(int j=1;j<=col;j++)
           result[i][j] = rs.getString(j);
    }
      

  2.   

    yyouyou(一塌) 
    你的是一种方法
    这个我也弄了
    问题就是太麻烦了,有没有简单点的?
    如果今天晚上9点还没有比你更好的答案。。
    结账
      

  3.   

    我很想知道ResultSet  是个什么东西
    有人能说说吗?
    在网上找了很多,说得都tmd更讲课似的
    太文驺驺了
    有没有人能说的口语化点
    就讲讲他是什么就行了看名字好像是个集合,这个集合该怎么理解呢?
      

  4.   

    ResultSet rs;//结果集ResultSetMetaData  rsmd = rs.getMetaData();
    int col = rsmd.getColumnCount();Vector v=new Vector();
    String[] result = new String[col];
    while(rs.next()){
        for(int j=1;j<=col;j++){result[j] = rs.getString(j);}
        v.add(result[j]);
    }
    return (String[])v.toArrary(String[0]);
      

  5.   

    如果知道到表中有多少列时 public String[][] selectExec(String sql)
    {
      String[][] a = "";
      int i = 0;
      //得到的记录集为rs
      while(rs.next()){
        for(int j=0;j<表列数;j++){
          a[i][j]=rs.getString(j);
        }
       i++;
      }
      return a;
    }//不记得二维数组怎么定义了,用这个肯定行
      

  6.   

    lovejklzs(真得味) 
    你的方法跟前面yyouyou(一塌) 是一个道理啊!我现在想知道的是有没有什么简单的方法
    直接可以把得到的 rs转换成 一个String[][]不过还是很谢谢大家的回答啊!!
      

  7.   

    http://community.csdn.net/Expert/topic/4431/4431438.xml?temp=.1810419
    转一个我的问题发在数据库了
    那边没人回答
    顺便顶一下这个帖子
      

  8.   

    ResultSet 只是一个接口,从该接口的方法列表里面找不到能够一次性转换成数组的方法。从概念上来说,执行会话得到结果集,没有用游标取记录之前,数据仍然在数据库,肯定是个循环,一行一行的取来,重要的是采用什么样的数据结构在内存中组织数据效率较高。
      

  9.   

    据说,方法同步的Vector要比不同步的ArrayList慢(在不要求线程同步的情况下)
    这两种数据结构本质上都是按10%增长因子(默认)动态增长的普通数组
    list.add() 方法很多情况下会引发类似下面的操作
    Object[] newArray = new Object[currentArray.length*110/100];
    System.arrayCopy(newArray,0,currentArray,0,...);ResultSet循环中,一次add一条记录,用上面两种结构会导致大量的内存拷贝工作。jdk1.4中有个LinkedList是一个双向循环链表,不过不要指望它的效率会比前面两者高我浏览过jstl的sql:query标签的一个实现函数,在里面看到的是SortedMap,它用这个
    肯定是有原因的,因为后面的标签要“按名(name)”取值,因为使用目的不同,也不能
    拿SortedMap和ArrayList来直接比较到目前为止ArrayList胜出如果追求更好的效率,对ArrayList可以做一些改写(我目前是这么做的)