当前位置: 首页 > 面试题库 >

ListArray保存相同记录

陶英达
2023-03-14
问题内容

我试图将数据库表保存在班级 学生*ListArray 中。 *

public List<Students> getData() {
    //_Students.clear();
    Students tempStudent = new Students();
    List<Students> students = new ArrayList<>();
    dbConnect();
    try {
        stmt = c.createStatement();
        rs = stmt.executeQuery("SELECT * FROM Students;");
        int size = 0;
        while (rs.next()) {
            tempStudent.studentId = rs.getInt("StudentNo");
            tempStudent.studentName = rs.getString("StudentName");
            tempStudent.studentAge = rs.getInt("StudentAge");
            students.add(tempStudent);
            size++;
        }
        rs.close();
        c.commit();
        stmt.close();
        c.close();
    } catch (SQLException e) {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }
    return students;
}

在while循环中,当我尝试将数据打印为

   System.out.println("Student Id: " + tempStudent.studentId);

它打印完美。但是当我尝试将其打印为

for (int i = 0; i < size; i++) {
        System.out.println("Student Id: " + student.get(i).studentId);
    }

它打印从数据库读取的最后一条记录。记录数相同。如果在数据库表中保存了4行,那么显示的记录也将是4次。

我使用LIST的方式有问题吗?谢谢!


问题答案:
Students tempStudent = new Students();

更改为

Students tempStudent;

您是overriddingproperty of same object因为您创建tempStudent outsidewhile loop。您必须在数据库中添加objects等于number of record。因此,创建tempStudent object如下。

使用

while (rs.next()) {
        tempStudent = new Students();
        tempStudent.studentId = rs.getInt("StudentNo");
        tempStudent.studentName = rs.getString("StudentName");
        tempStudent.studentAge = rs.getInt("StudentAge");
        students.add(tempStudent);
        size++;
    }


 类似资料:
  • 背景:对于我的用户,我需要存储一对相同的对象类型(设置),目前我有它像 我正在创建带有设置的KeyValueTypes,并将其添加到列表中(每个用户都有一个列表)。我的设置有一个值字段(它显示了它们是否比其他设置“更重要”),所以我希望基于该字段添加它们,稍后我还需要基于该字段(可能还需要基于名称字段)进行搜索--所以搜索将不得不在列表中查找,然后在KeyValueTypes中查找 问题:什么是最

  • 下面的代码安全吗?编写类似这样的代码可能很有诱惑力: 该映射仅用于字符串文本。 我认为这是完全合法的,似乎正在起作用,但是我从未见过保证在两个不同地方使用的文字指针是相同的。我无法设法让编译器为具有相同内容的文本生成两个单独的指针,所以我开始怀疑这个假设有多坚定。 我只关心相同内容的文字是否可以有不同的指针。或者更正式地说,上面的代码可以除外吗? 我知道有一种方法可以编写代码来确保它有效,我认为上

  • 我正在学习SpringJPA,我从将对象映射到表开始。我对OneToOne和OneToMany的关系没有问题,但我不太明白为什么我不能预先列出一个与许多关系相关的对象。我有一本可以有很多作者的书,还有一本可以有很多书的作者。通过中间表book_author正确生成模式(我可以在MySql Workbench中看到),但我得到以下示例: Hibernate:在作者(名字、姓氏)中插入值(?,) Hi

  • 我正在使用AWS kinesis和lambda开发一个实时数据管道,我试图弄清楚如何确保来自相同数据生产者的记录由相同的碎片处理,并最终由相同的lambda函数实例处理。 我的方法是使用分区键来确保来自相同生产者的记录由相同的碎片处理。但是,我不能让同一碎片中的记录由同一lambda函数实例处理。 基本设置如下: null 分区键用于在流中按碎片对数据进行分组。Kinesis Data Strea

  • 我正在开发一个spring boot应用程序,下面是一个API,例如: 我的问题出现在具有相同API的第二个/下一个请求中(例如上面的一个)“GetUserIdByUserNameBase”仍然记得第一次命中的所有保存数据!。 在我的例子中,“getUserIdByUserNameOutput”仍然保存来自API第一次命中的先前数据,直到我覆盖内容或将其标记为空。 1、GetUserIdByUse

  • 我试图保存多个记录通过 但是从上面来看,只创建了第一个数组。我哪里做错了?感谢您的帮助。