2016-09-14 15 views
2

私は、入力の1つがコンボボックス(JavaFX)であるmySQLデータベースに送信されるフォームを持っています。JavaFX ComboBoxの選択を文字列に変換する方法

コンボボックスからの入力を提出する場合、データベースに追加された値が

"ComboBox[id=rolePicker, styleClass=combo-box-base combo-box]" 

ないString値です。

データベースに送信されたデータが選択された値のStringになるように、この問題をどのように解決できますか?

(部分)JAVAコントローラコード:

public class NewUserController implements Initializable, ControlledScreen { 

    @FXML 
    TextField nameField; 
    @FXML 
    TextField usernameField; 
    @FXML 
    TextField emailField; 
    @FXML 
    ComboBox rolePicker; 

    @FXML 
    public void submitUser(ActionEvent event) { 
     String dbUsername = "root"; 
     String dbPassword = "secret"; 
     String dbURL = "jdbc:mysql://localhost:3306/uia"; 

     try { 
      Connection conn = DriverManager.getConnection(dbURL, dbUsername, dbPassword); 
      Statement statement = (Statement) conn.createStatement(); 
      statement.execute("INSERT INTO user (name, username, password, email, userrole) VALUES ('" + nameField.getText() + "', '" + usernameField.getText() + "', '" + usernameField.getText() + "', '" + emailField.getText() + "', '" + rolePicker + "');"); 

     } catch (SQLException e) { 
      System.out.println(e); 
     } 
    } 

(部分)FXMLコード:あなたは文字列式でrolePickerを使用し、次の行で

<ComboBox id="rolePicker" fx:id="rolePicker" editable="true" maxHeight="25.0" maxWidth="225.0" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" promptText="Role.." visibleRowCount="4"> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
      <String fx:value="TEACHER" /> 
      <String fx:value="STUDENT" /> 
     </FXCollections> 
    </items> 
</ComboBox> 

答えて

1

、したがって、コンパイラはtoString()を呼び出しますメソッドを使用して、オブジェクトの文字列表現を取得し、前述の出力を生成します。

statement.execute("INSERT INTO user (name, username, password, email, userrole) VALUES ('" + 
nameField.getText() + "', '" + usernameField.getText() + "', '" + usernameField.getText() + "', '" + emailField.getText() + 
"', '" + rolePicker + "');"); 

あなたはgetValue方法でComboBoxの選択された値を取得する必要があります。

rolePicker.getValue(); 

、あなたが式の中で返された値を使用することができます。

注:public final T getValue()getValueComboBoxは汎用パラメータ(ComboBoxに格納されているアイテムの種類)として有するタイプタイプを返します。現状ではString値(ComboBox<String>)を格納するComboBoxがあるため、戻り値を直接使用できます。

+0

ありがとうございました!魅力のように働いた。 –

関連する問題