有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用Javafx应用程序更改MySql数据库特定字段的值?

我正在做一个需要访问用户数据库的项目。我创建了一个javafx面板,用于显示数据库中的所有用户及其在表中的数据。我想制作一个方法,将所选用户的状态值从user更改为admin,反之亦然,但无论我做了什么,我都无法让它正常工作。以下是该方法的代码:

private void grantAdminRights() {
        admninrightsButton.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent admnrights) {
                try {
                    Connection con = DbUtil.getInstance().getConnection();
                    User selectedUser = userTable.getSelectionModel().getSelectedItem();
                    Integer selectedUserID = selectedUser.getUserID();
                    String grantAdminRights = "UPDATE `安卓shop`.`userdatabase` SET `status`='admin' WHERE `userID`="+selectedUserID +"";
                    String grantUserRights = "UPDATE `安卓shop`.`userdatabase` SET `status`='user' WHERE `userID`="+selectedUserID +"";
                    String statusValidation = selectedUser.getStatus();

                    if (statusValidation.equals("user"))
                    {
                        selectedUser.setStatus("admin");
                        PreparedStatement ps = con.prepareStatement(grantAdminRights);
                        ps.setInt(1, selectedUser.getUserID());
                        ps.executeUpdate();
                    } 
                    else if (statusValidation.equals("admin")) 
                    {
                        selectedUser.setStatus("user");
                        PreparedStatement ps = con.prepareStatement(grantUserRights);
                        ps.setInt(1, selectedUser.getUserID());
                        ps.executeUpdate();
                    } 
                    else {
                        System.out.println("Invalid field value");
                    }
                } 
                catch (SQLException e) {
                    e.printStackTrace();
                }


                }

        });
    }

用户类的内容:

public class User {
    public int userID;
    public String username;
    public String password;
    public String status;
    public String firstname;
    public String lastname;
    public String shippingadress;
    public String preferredpayment;
    public String purchaseditems;

    public enum PreferredPayment {
        CreditCard, PayPal, OnReceipt;
    }

    public int getUserID() {
        return userID;
    }

    public void setUserID(int userID) {
        this.userID = userID;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getShippingadress() {
        return shippingadress;
    }

    public void setShippingadress(String shippingadress) {
        this.shippingadress = shippingadress;
    }

    public String getPreferredpayment() {
        return preferredpayment;
    }

    public void setPreferredpayment(String preferredpayment) {
        this.preferredpayment = preferredpayment;
    }

    public String getPurchaseditems() {
        return purchaseditems;
    }

    public void setPurchaseditems(String purchaseditems) {
        this.purchaseditems = purchaseditems;
    }
public User(int userID, String status, String username, String firstname, String lastname, String shippingadress, String preferredpayment, String purchaseditems) {
        this.userID = userID;
        this.username = username;
        this.status = status;
        this.firstname = firstname;
        this.lastname = lastname;
        this.shippingadress = shippingadress;
        this.preferredpayment = preferredpayment;
        this.purchaseditems = purchaseditems;
    }
}

用数据填充表的方法(工作正常):

public void buildData() {
     data = FXCollections.observableArrayList();
     try {
         Connection con = DbUtil.getInstance().getConnection();
         String sql = "SELECT * FROM userdatabase";
         ResultSet rs = con.createStatement().executeQuery(sql);
         while(rs.next()) {
             data.add(new User(rs.getInt(1), rs.getString(2),  rs.getString(3), rs.getString(5), rs.getString(6),  rs.getString(7), rs.getString(8), rs.getString(9)));
         }
     } catch (SQLException ex){
         ex.printStackTrace();   
     }

        idColumn.setCellValueFactory(new PropertyValueFactory<User, Integer>("userID"));
        statusColumn.setCellValueFactory(new PropertyValueFactory<User, String>("status"));
        usernameColumn.setCellValueFactory(new PropertyValueFactory<User, String>("username"));
        firstNameColumn.setCellValueFactory(new PropertyValueFactory<User, String>("firstname"));
        lastNameColumn.setCellValueFactory(new PropertyValueFactory<User, String>("lastname"));
        adressColumn.setCellValueFactory(new PropertyValueFactory<User, String>("shippingadress"));
        paymentColumn.setCellValueFactory(new PropertyValueFactory<User, String>("preferredpayment"));
        itemsColumn.setCellValueFactory(new PropertyValueFactory<User, String>("purchaseditems"));

        userTable.setItems(null);
        userTable.setItems(data);
    }

显示的表格内容:

[表格内容]https://imgur.com/a/Bdoxg

如何使grantAdminRights方法按预期工作?我非常感谢任何关于代码的反馈和提示

感谢所有有时间回答的人


共 (1) 个答案

  1. # 1 楼答案

    我对该方法做了以下更改,现在它按预期工作:

    private void grantAdminRights() {
                admninrightsButton.setOnAction(new EventHandler<ActionEvent>() {
    
                    @Override
                    public void handle(ActionEvent admnrights) {
                        try {
                            Connection con = DbUtil.getInstance().getConnection();
                            User selectedUser = userTable.getSelectionModel().getSelectedItem(); 
                            String grantAdminRights = "UPDATE `androidshop`.`userdatabase` SET `status`='admin' WHERE `userID`= ?";
                            String grantUserRights = "UPDATE `androidshop`.`userdatabase` SET `status`='user' WHERE `userID`= ?";
                            String statusValidation = selectedUser.getStatus();
    
                            if (selectedUser != null && statusValidation.equals("user"))
                            {
                                selectedUser.setStatus("admin");
                                PreparedStatement ps = con.prepareStatement(grantAdminRights);
                                ps.setInt(1, selectedUser.getUserID());
                                ps.executeUpdate();
                            } 
                            else if (selectedUser != null && statusValidation.equals("admin")) 
                            {
                                selectedUser.setStatus("user");
                                PreparedStatement ps = con.prepareStatement(grantUserRights);
                                ps.setInt(1, selectedUser.getUserID());
                                ps.executeUpdate();
                            } 
                            else {
                                System.out.println("Invalid field value");
                                System.out.println(statusValidation);
                            }
                        } 
                        catch (SQLException e) {
                            e.printStackTrace();
                        }
    
    
                        }
    
                });
            }
    

    谢谢大家给我的提示,让我得以到达那里