从数据库中获取名称并在带有 java 的选择框中使用它们

Get Names from a DataBase and use them in a choiceBox with java

我正在努力获取数据库中名为 'Names' 的列的值。我还需要将它们插入到 Observabllelist 中,这样我就可以将它们用作 choiceBox.

中的选项
@FXML
        ObservableList GetTournamentsName() throws SQLException {

            ObservableList<String> optionList = null;

            Connection con = DBconnection.getConnection();
            Statement st = con.createStatement();
            String sql = ("SELECT Name FROM `tournaments`");
            ResultSet rs = st.executeQuery(sql);

            if (rs.next()) {
                optionList =  FXCollections.observableArrayList(rs.getString("Name"));
                con.close();
            }
            return optionList;
        }

然后我通过将我从 GetTournamentsName() 方法获得的值分配给 Choicbox TournamentsOption 来初始化我的应用程序场景。

@FXML
     void initialize() throws SQLException {
        TournamentsOption.setItems(GetTournamentsName());
     }

该代码仅部分起作用,我实际上得到了 Table 中的第一个名称,但不是所有其他的。这就是我要问的,我如何获得所有的价值? 预先感谢您的所有帮助!

这里有一个 if (rs.next()) { 它不会迭代 rs.next() 您需要制作它 while (rs.next()) { 并根据需要更改添加逻辑

您需要先声明并初始化您的选项列表。然后向其中添加数据。您的方法将永远只有一个数据字符串。您还在错误的地方关闭了连接。

   @FXML
    ObservableList GetTournamentsName() throws SQLException {

        ObservableList<String> optionList = FXCollections.observableArrayList();

        Connection con = DBconnection.getConnection();
        Statement st = con.createStatement();
        String sql = ("SELECT Name FROM `tournaments`");
        ResultSet rs = st.executeQuery(sql);

        while(rs.next()) {
            optionList.add(rs.getString("Name")));

        }

        con.close();
        return optionList;
    }