我开始想用List来保存我在数据库中读出的信息,之后再转换成String的之后再System.out但一直都报错,
后来我想用一个新的方式String[]去保存读出的信息,课室还是错误,我想我用String[]应该比用List保存之后读出的效率快吧
下面是我这两种想法的代码,但都无法实现我想实现的功能啊,第一种ResultSet出来的是我的bean的对象,之后我想用String[]直接保存,但还是出错啦,请问是哪里错了呢
List list = ArrayList();
PreparedStatement ps = connection.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
       
        while(rs.next()){
                rs.getString("name");
        list.add(rs);
}
    return list;servlet是
List<String> lists =  as.getOne(id);//as.as.getOne(id)是上面方法的名字
                String []Name =lists.toArray(new String [lists.size()]);到Name就报错啦我另外一个想法也错,我是想用String[]来代理用List来保存数据库读出的数据,代码如下:
程序代码:String[] yi null;
int y=0;
PreparedStatement ps = connection.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
              
        while(rs.next()){
            
        yi[y] = rs.getString("name");
        y++;
        }
    return yi;servlet是String[] src =  as.getOne(id);//as.as.getOne(id)是上面方法的名字这次到了yi[y]就出错啦,报空指针错误,  

解决方案 »

  1.   

    List list =new  ArrayList();
    list.add("str1");
    list.add("str2");
    list.add("str3");
    String[] Name =(String[]) list.toArray(new String[0]);
      

  2.   

    [Quote=引用 1 楼 kebin0001 的回复:]
    List list =new ArrayList();
    list.add("str1");
    list.add("str2");
    list.add("str3");
    String[] Name =(String[]) list.toArray(new String[0]);
    你这样,我也试过的,但是也是报错啊
      

  3.   

    List<String> list = new ArrayList<String>然后if循环遍历 在转换一下不就行了么
      

  4.   

    另外 你第一个方法 while循环  里面应该new javaBean 的对象   List.add()添加  不是添加rs 
      

  5.   


    我加上你的想法,编译是通过了,没报错啦,但却没有拿到我想要的东西,我想要的是数据库中的数据,我保存在数据库中的用户名,如:李四,但在用了这方法之后读出的是com.mysql.jdbc.ResultSet@1e45537,,我的代码如下:读数据的代码List<String> yi = new ArrayList<String>();
    PreparedStatement ps = connection.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            Annex ax = new Annex();
            
            while(rs.next()){         rs.getString("ax_url");
             yi.add(rs.toString());
            }
    servlet的代码List<String> list =  as.getOne(id);
    String[] Name =(String[]) list.toArray(new String[0]); for(String s : Name) {    
         System.out.println(s);   
    }
      

  6.   

    回  LZ ,看这行:
    list.add(rs);
    rs 是什么呢? ResultSet .
    然后 while 循环里,向 list里存的是 ResultSet 对象,就是 rs 了啊..不知道理解没.或者我没理解LZ的意思,他想要的就是 rs.
      

  7.   

    加入你的实体类有两个属性: ID  NAME
    那么你需要将代码 ResultSet rs = null;
    ArrayList<Form> list = new ArrayList<Form>();
    while (rs.next())
    {
    Form f = new Form();
    f.setId(rs.getInt("ID"));
    f.setName(rs.getString("NAME"));
    list.add(f);
    }Form 代表你的实体类.或者叫bean.我也新手,说错了勿怪.
      

  8.   


    感谢帮助先,首先我那rs是ResultSet的对象,我理解啦,我还想问我不用List保存,改用String[]来保存,哪个比较好呢
      

  9.   

    List好.
    可自动增加长度.
    数组麻烦些.
    用数组意味着你一开始定义多长,就在内存中占用了多大的内存,还需要手动去增加他的长度.不方便.
      

  10.   


    我也感谢你的帮助,你这想法是不行的,因为我最初就是这样做的,之后发现这样是错的,之后就改成了现在我发出来求助的第一个版本啦,因为你这样写,list里面的只是Form的 实现类对象,所以这样我在servlet里面就是最后System.out的时候读出的不是我数据库对应Name的value,所以这样的不行的,按楼上的说法是行的
      

  11.   

    应该这样得到你的数据while(rs.next()){
                String url = rs.getString("ax_url");
                yi.add(url);
            }建议还是使用List保存完整的实体,如7楼
      

  12.   

    天....
    你想要什么我才知道,
    你要向 System.out.pirntln 输出的东西,
    是你的字段属性的值,
    那么重写一下你 bean 的 toString 方法就可以了.
    或者直接list.add(rs.getString("name"));
      

  13.   

    你怎么放进list中的就怎么读出来你遍历list,得到你存进去的实体,如7楼就是得到Form实体,然后你再从form实体得到其属性值,就是调用form的get方法(form需要定义get方法)