我开始想用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]就出错啦,报空指针错误,
后来我想用一个新的方式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]就出错啦,报空指针错误,
list.add("str1");
list.add("str2");
list.add("str3");
String[] Name =(String[]) list.toArray(new String[0]);
List list =new ArrayList();
list.add("str1");
list.add("str2");
list.add("str3");
String[] Name =(String[]) list.toArray(new String[0]);
你这样,我也试过的,但是也是报错啊
我加上你的想法,编译是通过了,没报错啦,但却没有拿到我想要的东西,我想要的是数据库中的数据,我保存在数据库中的用户名,如:李四,但在用了这方法之后读出的是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);
}
list.add(rs);
rs 是什么呢? ResultSet .
然后 while 循环里,向 list里存的是 ResultSet 对象,就是 rs 了啊..不知道理解没.或者我没理解LZ的意思,他想要的就是 rs.
那么你需要将代码 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.我也新手,说错了勿怪.
感谢帮助先,首先我那rs是ResultSet的对象,我理解啦,我还想问我不用List保存,改用String[]来保存,哪个比较好呢
可自动增加长度.
数组麻烦些.
用数组意味着你一开始定义多长,就在内存中占用了多大的内存,还需要手动去增加他的长度.不方便.
我也感谢你的帮助,你这想法是不行的,因为我最初就是这样做的,之后发现这样是错的,之后就改成了现在我发出来求助的第一个版本啦,因为你这样写,list里面的只是Form的 实现类对象,所以这样我在servlet里面就是最后System.out的时候读出的不是我数据库对应Name的value,所以这样的不行的,按楼上的说法是行的
String url = rs.getString("ax_url");
yi.add(url);
}建议还是使用List保存完整的实体,如7楼
你想要什么我才知道,
你要向 System.out.pirntln 输出的东西,
是你的字段属性的值,
那么重写一下你 bean 的 toString 方法就可以了.
或者直接list.add(rs.getString("name"));