MySQL Prepared Statement不是从JavaFX Textfield读取的

时间:2017-04-09 20:05:05

标签: java mysql

我坚持了一段时间,我不知道如何解决这个问题。问题是我的SQL查询没有从javaFX textfield和passwordfield获取输入(我正在构建一个登录窗口)。 如果我手动输入值而不是从文本字段中获取它们,程序工作正常,否则当您按下登录按钮时没有任何反应。问题出现在以下行,当然没有错误消息:

 preparedStatement.setString(1,txtUserName.getText());
 preparedStatement.setString(2,txtPassword.getText());

以下是完整代码:

public class LoginWindow implements Initializable{

@FXML
private TextField txtUserName;
@FXML
private PasswordField txtPassword;
@FXML
private Button btnLogin;

Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;

// Setting the login button.
@FXML
private void setBtnLogin(ActionEvent event) {
    try {
        connection = DBUtilities.getConnection();
        String sqlQuery = "SELECT * FROM user_login_details WHERE User_Name = ? AND User_Password = ?";
        preparedStatement = connection.prepareStatement(sqlQuery);
        preparedStatement.setString(1,txtUserName.getText());
        preparedStatement.setString(2,txtPassword.getText());
        resultSet = preparedStatement.executeQuery();
        if(resultSet.next()) {
            DBUtilities.showInforMsg("Logged in:", "You have logged in!");

        } else {
            DBUtilities.showErrorMsg("Error:", "Invalid username or password");

        }

    }catch (Exception exception) {
        exception.printStackTrace();

    }finally {
        DBUtilities.closePreparedStatement(preparedStatement);
        DBUtilities.closeResultSet(resultSet);
        DBUtilities.closeConnection(connection);
    }
}
@Override
public void initialize(URL location, ResourceBundle resources) {
    btnLogin.setOnAction(this::setBtnLogin);
}
}

2 个答案:

答案 0 :(得分:1)

非常感谢你。我根本没有给密码字段提供任何ID。

答案 1 :(得分:0)

您可以先尝试从输入字段打印字符串进行调试:

 String username = txtUserName.getText();
 String password = txtPassword.getText();

 System.out.println("User name = " + username);
 System.out.println("Password = " + password);

 preparedStatement.setString(1, username);
 preparedStatement.setString(2, password);

如果用户名和密码为null,请确保这些字段控制器与FXML文档绑定良好。