2016-09-14 2 views
2

입력 내용 중 하나가 ComboBox (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(); 

당신은 표현의 반환 값을 사용할 수 있습니다.

참고getValueComboBox이 갖는 입력의 유형을 리턴 일반 파라미터합니다 (ComboBox에 저장된 항목 유형)으로서 : public final T getValue(). 현재 상황에서는 String 값 (ComboBox<String>)을 저장하는 ComboBox이 있으므로 반환 값을 직접 사용할 수 있습니다.

+0

정말 고마워요! 매력처럼 일했습니다. –

관련 문제