Как сохранить поле из базы данных после смены сцен в JavaFX? Необходимо захватить "ID" из таблицы базы данных после входа в систему - PullRequest
0 голосов
/ 10 ноября 2019

Я создаю JavaFX-приложение, похожее на Uber и другие приложения для совместного использования поездок. Пользователь может зарегистрироваться как «Райдер» или «Водитель». Затем они могут войти в систему, и пока приложение загружает одну из двух сцен, в зависимости от того, являются ли они «Райдером» или «Водителем». Я хочу отобразить их информацию в своем профиле, но у меня возникают проблемы с получением информации о пользователе после перехода со сцены Login на сцены Rider / Driver. Кроме того, JavaFX является новым для меня, поэтому мой «рабочий» код может быть неоптимальным.

В моем файле LoginController пользователь вошел в систему с помощью этого метода после проверки подлинности его информации:

private void loginUser(ActionEvent actionEvent, String scenePath) throws IOException {
    System.out.println("Login Successful!"); //Testing purposes
    Parent root = FXMLLoader.load(getClass().getResource(scenePath));
    Scene userScene = new Scene(root);

    setScene(actionEvent, userScene);
}

Затем они перенаправляются на правильную сцену, как "Rider "или" Driver ".

В настоящее время я работаю над классом RiderController, который будет обрабатывать серверную часть Rider.fxml.

RiderController имеет следующее intialize() метод для автоматического получения информации о базе данных

@Override
public void initialize(URL location, ResourceBundle resources) {
    try {
        userName.setText(databaseManager.selectUser());
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

И наконец, вот метод selectUser(), который запрашивает базу данных. На данный момент я жестко запрограммировал идентификатор, чтобы убедиться, что метод на самом деле печатает FIRST_NAME из базы данных (он делает).

public String selectUser() throws SQLException {
    String sql = "SELECT FIRST_NAME FROM USER WHERE ID = ?";
    PreparedStatement preparedStatement = con.prepareStatement(sql);
    preparedStatement.setInt(1, 1);

    String userName = "default";
    ResultSet rs = preparedStatement.executeQuery();
    while(rs.next()) {
        userName = rs.getString("FIRST_NAME");
    }
    return userName;
}

Я ожидаю, что смогу каким-то образом передать идентификатор изстрока базы данных с пользователем, который смог войти, после страницы входа.

...