私はしばらくこのことに固執しており、これを修正する方法がわかりません。問題は私のSQLクエリがjavaFXテキストフィールドとpasswordfield(私はログインウィンドウを構築しています)からの入力を取得しないことです。 テキストフィールドから値を取得するのではなく、手動で値を入力すると、プログラムは正常に動作します。そうしないと、ログインボタンを押しても何も起こりません。問題は、エラーメッセージが表示されず、もちろん、次の行で発生します。ここではMySQL Prepared StatementがJavaFXのテキストフィールドから読み込まない
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);
}
}
テキストフィールドから取得するのではなく、手動でデータを入力すると、つまり、次のようになります。 preparedStatement.setString(1、 "admin"); preparedStatement.setString(2、 "admin"); – cris22tian
'txtUserName.getText()。trim()'と 'txtPassword.getText()。trim()'を試してみることができますか? – developer
私はそれを試して、それは動作しません。レスポンスありがとう。それを引き起こしている可能性のある他のアイデアは? – cris22tian