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 楼答案
我对该方法做了以下更改,现在它按预期工作:
谢谢大家给我的提示,让我得以到达那里