如何使用数据库中的项目填充选择框

Posted

技术标签:

【中文标题】如何使用数据库中的项目填充选择框【英文标题】:How to populate a ChoiceBox with items from a database 【发布时间】:2014-05-11 09:09:58 【问题描述】:

我正在尝试通过 Hibernate 使用 H2 数据库中的项目(国家/地区)填充 ChoiceBox,但 ChoiceBox 仅填充了一些没有意义的奇怪项目,而不是实际的国家名称;像这样:

project.Forms.AddNew.DB.ItemsPOJO@5aa434

如何从数据库中获取实际的国家名称,而不是上面的值?

类如下所示:

POJO 类:

@Entity(name = "InitialDBItems")
public class InitialDBItemsPOJO implements Serializable 

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int countriesListID;
    private String countriesList;

    public String getCountriesList() 
        return countriesList;
    

    public void setCountriesList(String countriesList) 
        this.countriesList = countriesList;
    

    public int getCountriesListID() 
        return countriesListID;
    

    public void setCountriesListID(int countriesListID) 
        this.countriesListID = countriesListID;
    

持久化到数据库中的国家数组:

public class InitialDBItems 

    static InitialDBItemsPOJO initialDBItemsPOJO = new InitialDBItemsPOJO();

    public static void persistCountries() 
        String[] countriesList = 
            "Afghanistan",
            "Albania",
            "Algeria",
            // More countries



    ;
    for (String c : countriesList) 
        initialDBItemsPOJO.setCountriesList(c);
        new ManageItems().addItems(initialDBItemsPOJO);
        System.out.println(c);
    


我如何从数据库中获取国家/地区:

public static ObservableList<InitialDBItemsPOJO> retrieveCountriesList() 

    ObservableList<InitialDBItemsPOJO> data;
    List countriesListListItems;

    String countriesListListItemsQuery = "from InitialDBItems";
    data = FXCollections.observableArrayList();

    countriesListListItems = new ManageItems().listItems(countriesListListItemsQuery);

    for (Iterator iterator = countriesListListItems.iterator(); iterator.hasNext();) 
        InitialDBItemsPOJO countriesListListItemsIt = (InitialDBItemsPOJO) iterator.next();

        data.add(countriesListListItemsIt);
    
    return data;

希望您能提供帮助。提前谢谢大家。

【问题讨论】:

【参考方案1】:

project.Forms.AddNew.DB.ItemsPOJO@5aa434 是您的实体InitialDBItemsPOJO 的默认toString(); 的值,一个简单的解决方法是覆盖它

  @Entity(name = "InitialDBItems")

公共类 InitialDBItemsPOJO 实现可序列化

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int countriesListID;
private String countriesList;

public String getCountriesList() 
    return countriesList;


public void setCountriesList(String countriesList) 
    this.countriesList = countriesList;


public int getCountriesListID() 
    return countriesListID;


public void setCountriesListID(int countriesListID) 
    this.countriesListID = countriesListID;

public String toString()
    return countriesList;

public static ObservableList retrieveCountriesList()

ObservableList 数据;
列出国家ListListItems;

String countryListListItemsQuery = "来自 InitialDBItems";
数据 = FXCollections.observableArrayList();

countryListListItems = new ManageItems().listItems(countriesListListItemsQuery);

for (Iterator iterator = countriesListListItems.iterator(); iterator.hasNext();) 
    InitialDBItemsPOJO countriesListListItemsIt = (InitialDBItemsPOJO) iterator.next();

    data.add(countriesListListItemsIt.getCountriesList());

返回数据;

【讨论】:

非常感谢@Rafik Beldi 的回复。让我试试。这很有帮助 再次感谢@Rafik Beldi。你的解决方案就像一个魅力。

以上是关于如何使用数据库中的项目填充选择框的主要内容,如果未能解决你的问题,请参考以下文章

如何在Visual Basic 2012中使用mdb数据库中的数据填充列表框?

如何根据淘汰赛js中的单选按钮选择填充文本框

如何填充输入选择框Laravel vue js

Laravel-5 如何使用 id 值和名称值从数据库中填充选择框

使用 SQL (SDF) 数据库中的项目填充 WPF 列表框

使用大量项目填充组合框