首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ResultSet in a ObservableList

ResultSet in a ObservableList
EN

Stack Overflow用户
提问于 2017-10-28 21:07:26
回答 1查看 1.4K关注 0票数 0

我的问题是:我有一堂课,德特努:

代码语言:javascript
复制
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()函数,如下所示:

代码语言:javascript
复制
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中显示这些数据时,它会创建两行,但它们是相同的。在图片中显示:

数据库 x- The TableView

我不知道为什么会发生这种事,所以我们会感谢你的帮助:)

PS :对不起我的英语

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-28 21:20:15

Detenu类的所有成员都是static (由类的所有实例共享),这就是为什么您有这种行为。只要移除字段上的关键字,它就能工作了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46994501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档