java读数据库存入list

...while(rs.next()){ldf.setA(rs.getString(1));ldf.setB(rs.getString(2));ldf.setC(rs.g... ...
while(rs.next()) {
ldf.setA(rs.getString(1));
ldf.setB(rs.getString(2));
ldf.setC(rs.getInt(3));
beg_list.add(ldf);
}
Iterator it = beg_list.iterator();
while (it.hasNext())
{
System.out.println(it.next());
}
...
上面这段代码是执行一段sql后,将查询出的三个字段存到ldf的三个字段域中,其中ldf是一个实体对象,例如:
public class LDF {
private String A;
private String B;
private int C;
还包括各自的set/get方法
}
A,B,C三个字段相当于DB表中的三个字段。
之后将ldf对象放到一个list对象中beg_list,然后打印该list,但得到的结果是:
LDF@1c6f579之类的字符串,如果我这样写:beg_list.add(rs.getString(1));就可以打印出第一个字段的取值。

那使用beg_list.add(ldf);为什么得不到三个字段的取值呢?谢谢!
谢谢大家,我按照lig3162008的改为:
for(int i=0; i<beg_list.size(); i++) {
ldf = (LDF)beg_list.get(i);
System.out.println(ldf.getA() + " " + ldf.getB() + " " + ldf.getC());
}
但打印出的似乎总是最后一条数据?

另外,如果按照isning对LDF类添加toString()方法的话,我这里可能需要调用多次SQL,而且每次返回的字段都不同,这样的话,定义一个toString()方法就无法满足所有的字段打印,这有什么替代方法么?
展开
 我来答
百度网友22da862
推荐于2016-04-30 · TA获得超过124个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:81.4万
展开全部
你存入到list里面的是以个对象,所以打印出来的是LDF@1c6f579 这种形式的内存地址,
而rs.getString(1);是结果集里的一个数据(sql语句查询对应的字段)当然可以 。
System.out.println(it.next()); 这句里面的it.next() 是一个对象 你要的是对象里的属性 你说怎么能打印出来。
可以这样写LDF ldf =(LDF)it.next(); system.out.print(ldf.getA()+ldf.getB()+ldf.getC());不知道这样写你能不能明白
鸭梨三大爷R
2009-12-29
知道答主
回答量:64
采纳率:0%
帮助的人:24.2万
展开全部
while(rs.next()) {
ldf.setA(rs.getString(1));
ldf.setB(rs.getString(2));
ldf.setC(rs.getInt(3));
beg_list.add(ldf);
}
执行完上面代码,你的list里放的是LDF对象。如果System.out.println(it.next())打印出的结果是LDF对象在内存中的地址。

如果你想打印值的话
LDF ldf = (LDF )beg_list.get(0);
System.out.println(ldf.getA());
System.out.println(ldf.getB());
System.out.println(ldf.getC());

如果有多个,就在外面套一层for();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
isning
2009-12-29 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:102万
展开全部
你的ldf 是一个类 如果你没有给他写他自己的toString()方法的话他就继承的是父类的toString 方法 没有父类就继承object的toString()方法;
object的toString()方法就是输出。。。@1c6f579之类的字符串好像是内存地址,换句话说 ....pringln(obj) 如果打印的不是@。。。字串,你打开它的类,里边肯定写了 toString方法、
你在ldf里加上下边的方法就好了
public String toSring(){
return A + B + C;
}
或者
System.out.println(it.next().getA()+it.next().getB()+it.next().getC());
我可没让你用toSting 我只是告诉你有toString了才能print(object) toString是对象信息的字符串 不是用来满足你打印各种字段的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张赟玥
2009-12-29
知道答主
回答量:44
采纳率:0%
帮助的人:14.6万
展开全部
System.out.println(it.next()); 获得的只是一个地址而已

System.out.println(ldf.getA());这个才是取值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ヤマザキ266e77
2009-12-29 · TA获得超过2052个赞
知道小有建树答主
回答量:721
采纳率:0%
帮助的人:987万
展开全部
打印时不能直接取得list.get()来打印,这样是打印这个 LDF对象。
如果要取得里面的数据,需要先转换成为这个LDF类型,再通过getter方法取得这个数据

比如:
LDF ldf = beg_list.get(0);
System.out.println(ldf.getA());
...

----------------------------------------------------

并不是打印时只取得最后一条,是你在设置时没有重新创建对象,把你上面的循环改一下.
while(rs.next()) {
ldf = new LDF(); // 加入这句
ldf.setA(rs.getString(1));
ldf.setB(rs.getString(2));
ldf.setC(rs.getInt(3));
beg_list.add(ldf);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式