Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于mysql条件在javafx应用中打开不同的GUI_Java_Mysql_Javafx - Fatal编程技术网

基于mysql条件在javafx应用中打开不同的GUI

基于mysql条件在javafx应用中打开不同的GUI,java,mysql,javafx,Java,Mysql,Javafx,我正在编写一个模拟android设备商店的javafx应用程序 如果用户输入了正确的密码和用户名,我希望这个特定的方法能够根据mysql数据库表中“IsAdmin”列的内容打开一个不同的窗口 “IsAdmin”列的内容是布尔值 以下是该方法的代码: @FXML private Button LoginButton; @FXML private TextField UserField; @FXML private PasswordField PassField; @FXML private

我正在编写一个模拟android设备商店的javafx应用程序

如果用户输入了正确的密码和用户名,我希望这个特定的方法能够根据mysql数据库表中
“IsAdmin”
列的内容打开一个不同的窗口

“IsAdmin”
列的内容是布尔值

以下是该方法的代码:

@FXML
private Button LoginButton;

@FXML
private TextField UserField;

@FXML
private PasswordField PassField;

@FXML
private Label ManagerLoginLabel;

@FXML
private Label StatusLabel;

@FXML
private Button RegisterButton;

@FXML
public void Login() {
    LoginButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            PreparedStatement ps;
            try {
                Connection connection = DbUtil.getInstance().getConnection();
                ps = connection.prepareStatement("SELECT `Username`, `Password`, `IsAdmin` FROM `androidshop`.`userdatabase` WHERE `username` = ? AND `password` = ?");
                ps.setString(1, UserField.getText());
                ps.setString(2, String.valueOf(PassField.getText()));
                ResultSet result = ps.executeQuery();
                if (result.next() ****) {
                    StatusLabel.setText("Welcome, shop manager!");
                    try {
                        Parent parent;
                        parent = FXMLLoader.load(getClass().getClassLoader().getResource("view/ManagerPane.fxml"));
                        Stage stage = new Stage();
                        stage.setTitle("ManagerPane");
                        stage.setScene(new Scene(parent, 450, 450));
                        stage.show();
                        ((Node)(event.getSource())).getScene().getWindow().hide();
                    }
                        catch (IOException e) {
                            e.printStackTrace();
                             } else if (result.next() ****){
                            Parent parent;
                            StatusLabel.setText("Welcome, honored customer!");
                            parent = FXMLLoader.load(getClass().getClassLoader().getResource("view/ClientPane.fxml"));
                            Stage stage = new Stage();
                            stage.setTitle("ClientPane");
                            stage.setScene(new Scene(parent, 450, 450));
                            stage.show();
                            ((Node)(event.getSource())).getScene().getWindow().hide();

                        }
                     else {
                        StatusLabel.setText("Wrong Password/Username, please try again");
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}
@FXML
私人按钮登录按钮;
@FXML
私有文本字段用户字段;
@FXML
私有密码字段PassField;
@FXML
私有标签管理器登录标签;
@FXML
自有品牌;
@FXML
专用按钮寄存器按钮;
@FXML
公共无效登录(){
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
编制报表;
试一试{
Connection Connection=DbUtil.getInstance().getConnection();
ps=connection.prepareStatement(“从`androidshop`.`userdatabase`中选择`Username`、`Password`、`IsAdmin`,其中`Username`=?和`Password`=?”;
ps.setString(1,UserField.getText());
ps.setString(2,String.valueOf(PassField.getText());
结果集结果=ps.executeQuery();
if(result.next()***){
StatusLabel.setText(“欢迎光临,商店经理!”);
试一试{
父母;
parent=FXMLLoader.load(getClass().getClassLoader().getResource(“view/ManagerPane.fxml”);
阶段=新阶段();
舞台设置标题(“经理板”);
舞台场景(新场景(家长,450450));
stage.show();
((节点)(event.getSource()).getScene().getWindow().hide();
}
捕获(IOE异常){
e、 printStackTrace();
}else if(result.next()***){
父母;
StatusLabel.setText(“欢迎您,尊敬的客户!”);
parent=FXMLLoader.load(getClass().getClassLoader().getResource(“view/ClientPane.fxml”);
阶段=新阶段();
stage.setTitle(“客户端窗格”);
舞台场景(新场景(家长,450450));
stage.show();
((节点)(event.getSource()).getScene().getWindow().hide();
}
否则{
StatusLabel.setText(“错误的密码/用户名,请重试”);
}
}捕获(SQLE异常){
e、 printStackTrace();
}
}
});
}
}
考虑到
“IsAdmin”
字段,我不知道应该如何编写正确的条件,并且我无法在网上找到任何内容

我在方法中用
“****”
标记了我想要放置这些条件的空格

这些情况应该是什么样子?还是有更好的方法来实现这个结果

我将非常感谢任何关于如何改进我的代码的答案或提示


谢谢您的时间。

基本上,我更喜欢使用一个表来创建一个条件,比如说“userid”,它包含:

  • 用户名
  • 密码
  • 状态(可能包含管理员、最终用户或其他内容)
因此,在java中,代码将是:

public void Login() {
    LoginButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override
    public void handle(ActionEvent event) {
        PreparedStatement ps;
        try {
            Connection connection = DbUtil.getInstance().getConnection();
            String sql = "SELECT username, password, status FROM userid WHERE username = ? AND password = ?";
            ps = connection.prepareStatement(sql);
            ps.setString(1, UserField.getText());
            ps.setString(2, String.valueOf(PassField.getText()));
            ResultSet result = ps.executeQuery();
            if (result.next()) {
                String status = result.getString("status");
                if(status == "admin"){
                    StatusLabel.setText("Welcome, shop manager!");
                    try {
                        Parent parent;
                        parent = FXMLLoader.load(getClass().getClassLoader().getResource("view/ManagerPane.fxml"));
                        Stage stage = new Stage();
                        stage.setTitle("ManagerPane");
                        stage.setScene(new Scene(parent, 450, 450));
                        stage.show();
                        ((Node)(event.getSource())).getScene().getWindow().hide();
                    }
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }else{
                    try {
                        Parent parent;
                        StatusLabel.setText("Welcome, honored customer!");
                        parent = FXMLLoader.load(getClass().getClassLoader().getResource("view/ClientPane.fxml"));
                        Stage stage = new Stage();
                        stage.setTitle("ClientPane");
                        stage.setScene(new Scene(parent, 450, 450));
                        stage.show();
                        ((Node)(event.getSource())).getScene().getWindow().hide();
                    } catch (Exception e) {
                        System.out.println("Failed to Show Stage "+ e);
                    }
                }                     
            }                
        }catch (SQLException e) {
            StatusLabel.setText("Wrong Password/Username, please try again");
        }
    });
    }
}
上面的代码将在admin列中查找值和条件:

if(status == "admin"){
}

如果字符串状态包含字符串“admin”,则它将打开admin页,否则将转到客户端页

注意:最好创建一个单独的方法来调用fxml文件,并在需要时调用它。只需给出参数字符串fxmlFile,它将定义将在后台设置的FXML文件。

status==“admin”
if(status == "admin"){