У меня есть таблица SQL, в которой хранятся пользователь, пароль и роль / уровень полномочий пользователя, Admins = 5, обычные пользователи = 1.Прямо сейчас я не уверен, как передать информацию, которую я получил от моего метода getUserRole, в обработчик событий входа в систему, так как это метод Int, и вы не можете вернуть ему переменную логического типа из int, или есть лучшийспособ переделать код, чтобы сделать его проще?
Метод входа в систему
public boolean isLogin(String user, String pass) throws Exception{
PreparedStatement pr = null;
ResultSet rs = null;
String sql = "SELECT * FROM Login where username = ? and password = ?";
try{
pr = this.connection.prepareStatement(sql);
pr.setString(1, user);
pr.setString(2, pass);
rs = pr.executeQuery();
if(rs.next()){
rs.getInt("role");
return true;
}
return false;
}
catch(SQLException ex){
return false;
}
finally{
pr.close();
rs.close();
}
}
Получить метод авторизации пользователя
public int getUserRole(String user) throws Exception
{
PreparedStatement pr = null;
ResultSet rs = null;
String sql = "SELECT * FROM Login WHERE username = ? AND role = ?";
try
{
pr = this.connection.prepareStatement(sql);
pr.setString(1, user);
if(rs.next())
{
int role = rs.getInt("role");
return role;
}
else{
return 0;
}
}
catch(SQLException ex)
{
return 0;
}
finally
{
pr.close();
rs.close();
}
}
И, наконец, контроллер,обработчик события входа в систему
@FXML
public void Login (ActionEvent event){
try{
if(this.loginModel.isLogin(this.username.getText(), this.password.getText())){
Stage stage = (Stage) this.login.getScene().getWindow();
stage.close();
if(this.loginModel.getUserRole(this.username.getText()))//error is here,
cant get username as its a boolean type and not int
}
}
catch (Exception localException)
{
this.loginStatus.setText("The username or password entered is incorrect. Please check and try again.");
}
}