2017-04-19 1 views
0

私のデータベースに「名前」という列の値を取得するのに苦労しています。私はまたObservabllelistのように彼らにinsuredする必要があるので、私はchoiceBoxのオプションとしてそれらを使用することができます。データベースから名前を取得し、Javaの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()); 
    } 

コードは部分的に機能しますが、私は実際にテーブルの最初の名前を取得しますが、他のものはすべて取得しません。それが私が求めていることです。どのようにすべての価値を得るのですか? 事前にすべてのヘルプをありがとうございます!ここで

+0

optionList = FXCollections.observableArrayList(rs.getString( "Name")));これは何ですか? – Sedrick

答えて

0

を必要に応じてあなたが最初にあなたのoptionListを宣言し、初期化する必要が追加のロジックを変更していないだろうif (rs.next()) {を持っています。次に、データを追加します。あなたのアプローチでは、1つのデータ文字列しかそこにはありません。あなたはまた、間違った場所であなたの接続を閉じました。

@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; 
    } 
+0

ありがとう、たくさんのセドリック!それは完璧に動作します、今、ソリューションは非常に明らかなようです、ハハ! – Gab

2

あなたはそれがあなたがそれwhile (rs.next()) {ようにする必要がありrs.next() のために反復して

+0

ありがとうございました! – Gab

関連する問題