从DataBase获取名称并在带有java的choiceBox中使用它们

时间:2017-04-19 10:11:23

标签: java mysql database javafx scenebuilder

我正在努力获取名为'名称'的列的值。在我的数据库中。我还需要将它们插入到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;
        }

然后通过为Choicbox TournamentsOption方法分配GetTournamentsName()值来初始化应用程序的场景。

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

代码只是部分工作,我实际上获得了表中的第一个名称而不是所有其他名称。这就是我要问的问题,如何获得所有值? 提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

在这里,你有一个if (rs.next()) {,它不会为rs.next()进行迭代 您需要将其设为while (rs.next()) {并根据需要更改添加逻辑

答案 1 :(得分:0)

您需要先声明并初始化您的optionList。然后您将数据添加到它。您的方法只会有一个数据字符串。您还在错误的位置关闭了连接。

import {Component} from '@angular/core';

@Component({
  selector: 'dashboard-subpage',
  templateUrl: 'templates/dashboard',
})

export class DashboardComponent {

  constructor() {
  }
}