【问题标题】:Same record is returned while there are different records in DB?数据库中有不同记录时返回相同的记录?
【发布时间】:2015-06-23 15:57:34
【问题描述】:

我的代码多次返回对象但相同的记录,因为正在经历相同的对象引用。请提出一些修改建议,以便我获得所有记录而不重复相同的行。

DBConnection con = null;
        List<UserModel> users= new ArrayList<UserModel>();
        UserModel userModel = null;
        try {
            con = new DBConnection();
            LOGGER.info("############### DBUtils.getUsers() start");
            ResultSet rs = null;
            PreparedStatement pstmt = null;
            pstmt = con.connection.prepareStatement(
                    DBUtils.Select.USERS);
            pstmt.setString(1, user);
            pstmt.setString(2, pwd);

            rs = pstmt.executeQuery();
            while (rs.next()) {
                userModel = new UserModel();
                userModel.setName(rs.getString("NAME"));
                userModel.setUserId(rs.getString("USERID"));
                userModel.setPassword(rs.getString("PASSWORD"));
                userModel.setAccountDeleted(rs.getString("ACCOUNT_DELETED"));
                userModel.setAccountEnabled(rs.getString("ACCOUNT_ENABLED"));
                userModel.setAccountExpired(rs.getString("ACCOUNT_EXPIRED"));
                userModel.setCreationTime(rs.getString("CREATION_TIME"));
                userModel.setDeletionTime(rs.getString("DELETION_TIME"));
                userModel.setCredentialsExpired(rs
                        .getString("CREDENTIALS_EXPIRED"));
                userModel.setPermissions(rs.getString("PERMISSIONS"));
                userModel.setLastLoginTime(rs.getString("LAST_LOGIN_TIME"));
                LOGGER.info("############### DBUtils.getUsers() users : "+userModel);
                users.add(userModel);
            }

            LOGGER.info("############### DBUtils.getUsers() users : "+users);

        } catch (SQLException e) {
            e.printStackTrace();
        } 
        finally{
            if(con!= null){
                con.closeConnection();
            }
        }

【问题讨论】:

  • 你能发布记录器吗

标签: java jakarta-ee servlets jdbc


【解决方案1】:

在循环内创建实例并将其添加到循环中,否则您将更新相同的引用并将其添加到列表中。

while (rs.next()) {
            UserModel    userModel = new UserModel();

【讨论】:

  • 不,OP 使用相同的引用但在循环继续时指向不同的对象,因此对先前对象的引用将消失。
  • Nambari 谢谢,现在我正在获取数据并且没有重复值......以前我在上面定义了 UserModel 而不是在 while 条件内......
  • 很高兴它有帮助,祝你好运!我强烈建议您阅读并理解这个概念stackoverflow.com/questions/40480/…
猜你喜欢
  • 2022-01-13
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多