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()方法就无法满足所有的字段打印,这有什么替代方法么? 展开
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()方法就无法满足所有的字段打印,这有什么替代方法么? 展开
7个回答
展开全部
你存入到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());不知道这样写你能不能明白
而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());不知道这样写你能不能明白
展开全部
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();
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();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的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是对象信息的字符串 不是用来满足你打印各种字段的
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是对象信息的字符串 不是用来满足你打印各种字段的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
System.out.println(it.next()); 获得的只是一个地址而已
System.out.println(ldf.getA());这个才是取值。
System.out.println(ldf.getA());这个才是取值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打印时不能直接取得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);
}
如果要取得里面的数据,需要先转换成为这个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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询