将 Java swing JList 元素保存到 MySQL 或从 MySQL 恢复

发布于 2024-09-25 02:23:27 字数 115 浏览 0 评论 0原文

我是 Java(和 swing)新手,正在寻找一种将所有 JList 元素保存(并稍后重新加载)到数据库或特别是 MySQL 的方法。我读到了有关 Java Serialized 的内容,但找不到可供参考的工作代码。

I'm new to Java (and swing) and looking for a way to save (and reload it later) all JList elements to Database or in particular MySQL. I read about Java Serializable and cannot find a working code for reference.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悸初 2024-10-02 02:23:27

序列化不是答案。您想要做的是拥有一个可以迭代 JList Model 类的控制器,并将每个项目的数据保存到数据库中。

String[] data = {"one", "two", "three", "four"};
JList dataList = new JList(data);

for(int i = 0; i < dataList.getModel().getSize(); i++) {
    String item = (String)dataList.getModel().getElementAt(i);
    saveItemToDatabase(item);
}

这样,您仅将数据保存到数据库,而不是列表的 UI 部分以及尝试序列化 Jlist 的所有其他位。

编辑:要保存整个模型,我仍然会单独保存项目,而不是 BLOB。因此,要从数据库检索数据,您可以执行类似的操作

dataList.setListData(loadModelFromDatabase());

public Vector loadModelFromDatabase() {
    Vector listModelData = new Vector();
    ResultSet res = conn.prepareStatement("SELECT * FROM listmodel").executeQuery();
    while(res.next()) {
       listModelData.add(res.getString(1));
    }

    return listModelData;
}

Serialization is not the answer. What you want to do is have a controller that can iterate of the JList Model class, and save the data from each item to a database.

String[] data = {"one", "two", "three", "four"};
JList dataList = new JList(data);

for(int i = 0; i < dataList.getModel().getSize(); i++) {
    String item = (String)dataList.getModel().getElementAt(i);
    saveItemToDatabase(item);
}

This way, you are only saving the data to the database, and not the UI part of the list, and all the other bits around it that trying to serialize the Jlist would do.

Edit: To save the whole model I would still save the items individually, rather than a BLOB. So, to retrieve the data back from the database, you would do something like

dataList.setListData(loadModelFromDatabase());

public Vector loadModelFromDatabase() {
    Vector listModelData = new Vector();
    ResultSet res = conn.prepareStatement("SELECT * FROM listmodel").executeQuery();
    while(res.next()) {
       listModelData.add(res.getString(1));
    }

    return listModelData;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文