狮子般的太阳 2019-06-28 16:43 采纳率: 0%
浏览 3048

把数据库查询的结果集,添加到List中,输出后为什么所有的内容都一样?

public static void main(String[] args) {
        Connection conn =null;
        Statement st =null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        List<user> userList=new ArrayList<user>(); //user表集合  
        user user=new user();                                  //user表domain
        try {
            conn = jdbcTest.getConnection();
             st = conn.createStatement();
            ps = conn.prepareStatement("select * from user");
            rs = ps.executeQuery();
            while(rs.next()) {           //通过循环把结果集,添加到user,再添加到userList中
            user.setName(rs.getString(1));
            System.out.print(rs.getString(1)+"   ");   //查看添加的数据
            user.setPwd(rs.getString(2));
            System.out.println(rs.getString(2));
            userList.add(user);                                 //添加到userList
            }
            System.out.println(userList);                 //输出userList
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            jdbcTest.close(conn, st, null);
        }
    }


下面是结果:
zhang0 mima0
zhang1 mima1
zhang2 mima2
zhang3 mima3
zhang4 mima4
zhang5 mima5
zhang6 mima6
zhang7 mima7
zhang8 mima8
zhang9 mima9
zhang10 mima10
zhang11 mima11
zhang12 mima12
zhang13 mima13
zhang14 mima14
zhang15 mima15
zhang16 mima16
zhang17 mima17
zhang18 mima18
zhang19 mima19

[user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
, user [name=zhang19, pwd=mima19]
]

  • 写回答

2条回答 默认 最新

  • 狮子般的太阳 2019-06-28 16:57
    关注

    已经解决,出现这种情况的原因,是把同一个地址的user,打印了20边,因为在循环体外,声明的user对象,在循环体中每次添加的都是同一个地址的user;
    把uesr的声明添加到循环体中,每次循环都声明一个新的user并添加到List集合

    while(rs.next()) {     //通过循环把结果集,添加到user,再添加到userList中
                user user=new user();       
                user.setName(rs.getString(1));
                System.out.print(rs.getString(1)+"   ");   //查看添加的数据
                user.setPwd(rs.getString(2));
                System.out.println(rs.getString(2));
                userList.add(user);                                 //添加到userList
                }
    
    

    参考源自:https://blog.csdn.net/xiaoshidetaikuai20/article/details/48550329
    非常感谢

    评论

报告相同问题?

悬赏问题

  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式