Search code examples
javaarraylistresultset

Only last result from ResultSet showing in ArrayList


I am trying to store values from ResultSet into an ArrayList. But when I print the values of the ArrayList only the last value stored is displayed for the total number of times.

enter image description here

ResultSet rs = stmt.executeQuery(query);

        while (rs.next()) {

            user.setF_number(rs.getInt("F_NUMBER"));
            user.setId(rs.getString("ID"));
            user.setFirst_name(rs.getString("FIRST_NAME"));
            user.setMsg_date(rs.getString("MSG_DATE"));
            user.setTopic_id(rs.getInt("TOPIC_ID"));
            user.setMessage(rs.getString("MESSAGE"));
            System.out.println(rs.getString("MESSAGE"));
            users.add(user);
        }

        Iterator itr = users.listIterator();
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }

Solution

  • Each time you iterate the while loop you should instantiate a new User object.Otherwise you get only the last result as the out come.

    while (rs.next()) {
                User user = new User();//this should be inside while loop
                user.setF_number(rs.getInt("F_NUMBER"));
                user.setId(rs.getString("ID"));
                user.setFirst_name(rs.getString("FIRST_NAME"));
                user.setMsg_date(rs.getString("MSG_DATE"));
                user.setTopic_id(rs.getInt("TOPIC_ID"));
                user.setMessage(rs.getString("MESSAGE"));
                System.out.println(rs.getString("MESSAGE"));
                users.add(user);
        }