我對標題上的兩個問題感到困惑。您建議我在以下控制器類中使用什么函式來避免 SignUp 中的空白條目,并且在不通過身份驗證的情況下無法使用 null 或 "" 值登錄?我檢查了不同的方法,但它要么根本不起作用,要么給出了一些錯誤。否則該應用程式運行良好。我使用在線Mysql,效果很好。
@FXML
void fcnBtnSignUp(ActionEvent event) {
try {
conn = dbConnection.connect();
String sql = "insert into tblSignUp (FULL_NAME, GENDER, EMAIL, PASSWORD, RE_PASSWORD) values (?,?,?,?,?)";
pst= conn.prepareStatement(sql);
pst.setString(1, txtFullName.getText());
pst.setString(2, txtGender.getText());
pst.setString(3, txtEmail.getText());
pst.setString(4, txtPassword.getText());
pst.setString(5, txtRePassword.getText());
pst.execute();
txtFullName.setText("");
txtGender.setText("");
txtEmail.setText("");
txtPassword.setText("");
txtRePassword.setText("");
Parent root;
try {
Stage stage = (Stage) btnSignUp.getScene().getWindow();
// do what you have to do
stage.close();
root = FXMLLoader.load(getClass().getResource("SignUpSuccess.fxml"));
Scene s = new Scene(root);
Stage ss = new Stage();
ss.setScene(s);
ss.show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SQLException ex) {
Logger.getLogger(SampleController.class.getName()) . log(Level.SEVERE, null,ex);
}
}
@FXML
void fcnBtnLogin(ActionEvent event) {
String a ="";
try {
conn = dbConnection.connect();
String sql = "Select * from tblSignUp where EMAIL=? AND PASSWORD=?";
pst =conn.prepareStatement(sql);
pst.setString(1, txtLoginEmail.getText());
pst.setString(2, txtLoginPassword.getText());
ResultSet rs = pst.executeQuery();
if(rs.next() == true) {
try {
Stage stage = (Stage) btnLogin.getScene().getWindow();
// do what you have to do
stage.close();
Parent root = FXMLLoader.load(getClass().getResource("ReadingMain.fxml"));
Scene s = new Scene(root);
Stage ss = new Stage();
ss.setScene(s);
ss.show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
System.out.println("Login Unsuccessful! Incorrect Username or Password");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
uj5u.com熱心網友回復:
NOT NULL
您是否在創建資料庫表期間嘗試將屬性“NOT NULL”插入欄位?
例如
CREATE user profile {
FULL_NAME VarChar(20) NOT NULL
GENDER VarChar(10) NOT NULL
EMAIL VarChar(30) NOT NULL
PASSWORD_HASH BINARY(64) NOT NULL
}
這可以防止在上游插入空值,并且顯然應該只放置在需要的地方。
uj5u.com熱心網友回復:
對于像身份驗證憑據這樣重要的東西,您應該在客戶端和服務器端都進行檢查。
客戶端
我不是 JavaFX 專家,但根據這篇文章,您只需檢查資料輸入欄位的文本內容。
這是我對該代碼的修改版本。除了測驗沒有文本之外,我會使用String#isBlank而不是isEmpty測驗所有空格。
Label response = new Label();
Button submit = new Button( "Submit" );
TextField username = new TextField();
submit.setOnAction( action ->
{
if ( username.getText().isBlank() )
{
response.setText( "The “User Name” field is required." );
}
else
{
response.setText( "The name you entered is " username.getText() );
…
}
}
);
服務器端
在資料庫服務器上,按照Eugenio的正確答案中的說明進行操作。設定NOT NULL在永遠不應該為空的列中。
我還會在這些列上添加一個觸發器,以驗證傳入的值不是空/空白字串。(NULL 和空字串是兩個不同的東西。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/407538.html
標籤:
