gpt4 book ai didi

java - ObservableList 中的结果集

转载 作者:行者123 更新时间:2023-12-02 12:04:30 26 4
gpt4 key购买 nike

这是我的问题:我有一堂 Detenu 课:

public class Detenu {
private static String n_ecrou; // Unique id
private static String prenom;
private static String nom;
private static String date_naissance;
private static String lieu_naissance;

public Detenu(String p1, String p2, String p3, String p4, String p5) {
n_ecrou = p1;
prenom = p2;
nom = p3;
date_naissance = p4;
lieu_naissance = p5;
}

public static String getN_ecrou() {
return n_ecrou;
}
}

我还使用 JDBC 将我的应用程序连接到嵌入式数据库。该数据库实现了一个包含 5 列的 DETENU 表,分别是“N_ECROU”、“PRENOM”、“NOM”、“DATE_NAISSANCE”、“LIEU_NAISSANCE”。

然后,我需要在 JavaFX TableView 中显示数据库中存储的所有 Detenus。所以我使用像这样的 getData() 函数:

public static ObservableList<Detenu> getData() {
ObservableList<Detenu> data = FXCollections.observableArrayList();
try {
// This part works fine
Connection con = DriverManager.getConnection("...");
Statement stmt = con.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM DETENU);

while(result.next()) {
// Here comes the problem
// This shows all the different n_ecrou
System.out.println(result.getObject(1).toString());

data.add(new Detenu(result.getObject(1).toString(), result.getObject(2).toString(), result.getObject(3).toString(), result.getObject(4).toString(), result.getObject(5).toString()));
}
// This shows the same n_ecrou
System.out.println(data.get(0).getN_ecrou() + " " + data.get(1).getN_ecrou());
stmt.close();
result.close();
} catch(SQLException e) {
//Error process
}

return data;
}

例如,我的数据库中有两个 Detenus。我得到的 ObservableList 包含两个 Detenus,但同一个,即数据库中的最后一个。因此,当我想在 TableView 中显示这些数据时,它会创建两行,但它们是相同的。如图所示:

The database | The TableView

我不知道为什么会发生这种情况,所以我们将感谢任何帮助:)

PS:抱歉我的英语

最佳答案

Detenu 类的所有成员都是静态(由该类的所有实例共享),这就是您具有这种行为的原因。只需删除字段中的关键字即可。

关于java - ObservableList 中的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46994501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com