Java 可观察列表中的结果集
我的问题是: 我有一个班级名单:Java 可观察列表中的结果集,java,jdbc,javafx,netbeans,Java,Jdbc,Javafx,Netbeans,我的问题是: 我有一个班级名单: 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
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列的目录表,分别是N_ecru、PRENOM、NOM、DATE_NAISSANCE、Liu_NAISSANCE
然后,我需要在JavaFXTableView中显示存储在数据库中的所有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中显示这些数据时,它会创建两行,但它们是相同的。
在图片中显示:
|
我不知道为什么会发生这种情况,因此我们将感谢您的帮助:
PS:对不起,我的英语不好您的DeMenu类的所有成员都是由该类的所有实例静态共享的,这就是您有这种行为的原因。只需删除字段上的关键字,它就会工作