首页 > 解决方案 > 如何将数据查询到 JFXComboBox

问题描述

我一直在尝试从我的数据库中查询数据并将其传递给我JFXComboBox的 as 值

我尝试将它包装到 awhile loop并将每个项目添加到,JFXComboBox但它仍然没有显示我的数据中的值。

@FXML
JFXComboBox<String> combobox;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
  String sql = "Select * from transaction_type from transactions";
  try(Connection conn = SQLConnection.getConnection(); /*Singleton Class DB       Connection*/
  Statement statement = conn.createStatement();
  ResultSet rs = statement.executeQuery(sql))
 {
   while(rs.next()){
     combobox.getItems.add(rs.getString(2));
   }
 }
catch(SQLException e)
 {
   serr(e.getNessage());
 }
}

我希望 中的项目JFXComboBox是在交易中找到的价值

标签: javamysqljavafxjfoenix

解决方案


正确的方法是创建一个模型类,但是,我认为这可以帮助你。

创建一个方法:

public static void fillListFromDataBase (Connection conn, ObservableList<String> list) {
    String sql = "SELECT fieldName FROM transactions";
    try {
        Statement statement = conn.createStatement();
        ResultSet rs = statement.executeQuery(sql))

        while(rs.next()) {
            list.add(rs.getString("fieldName"));
        }
    } catch(SQLException e) {
        e.printStackTrace();
    }
}

然后调用方法加载列表中的数据,并将列表绑定到Combobox:

JFXComboBox<String> combobox;

private ObservableList<String> list = FXCollections.observableArrayList();

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
    Connection conn = SQLConnection.getConnection();

    fillListFromDataBase (conn, list);
    combobox.setItems(list);
}

推荐阅读