首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javafx - log in函数如果log in详细信息正确,则执行'else‘块,但当详细信息错误时,什么也不会发生

javafx - log in函数如果log in详细信息正确,则执行'else‘块,但当详细信息错误时,什么也不会发生
EN

Stack Overflow用户
提问于 2018-09-30 01:22:13
回答 1查看 20关注 0票数 0

因此,我有这个登录控制器,它在细节正确时执行'else‘块,这意味着键入的用户名和密码存在于数据库中。这是不应该发生的。应该发生的是,如果细节是正确的,应该执行' if‘块,然后它转到另一个场景,如果细节是错误的,将弹出一个警告( 'else’块的内容)。

Log_inController.java

代码语言:javascript
复制
public class Log_inController implements Initializable {
private DBConnection dc;

@FXML TextField txtUn;
@FXML PasswordField txtPw;
@FXML Button btnLogin;


@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}    


@FXML
public void log_in (ActionEvent event) throws SQLException, IOException {
     dc = new DBConnection();
   try{
        String name =  txtUn.getText();
        String pass =  txtPw.getText();
        
        
        Connection conn = dc.Connect();
        ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM tbl_lib WHERE lib_acc = '"+ name +"'");
   
    
    if(rs.next()){
        String database_name = rs.getString(1);
        String database_pass = rs.getString(2); 
        
        if(name.equals(database_name) && pass.equals(database_pass)){
            Parent x=FXMLLoader.load(getClass().getResource("/Collection_UI/Home.fxml")); 
            Scene  M= new Scene(x);
            Stage app=(Stage)((Node)event.getSource()).getScene().getWindow();
            app.setScene (M);
            app.show();
        }else{
            Alert alert = new Alert(AlertType.WARNING);
            alert.setHeaderText("Invalid Credentials");
            alert.setContentText("Please input your valid username and password then try again");

            alert.showAndWait();  
        }
   }
    
}
 catch(SQLException ex){
     System.err.println("Error"+ex);
 }
         
         }
    
}

以下是输入正确详细信息时的屏幕截图:

https://imgur.com/8k0s7ia

怎样才能解决这个问题并达到预期的效果呢?请。

EN

回答 1

Stack Overflow用户

发布于 2018-09-30 07:49:26

问题可能在语句中。尝试使用PreparedStatement来解决SQL语法的典型问题。

代码语言:javascript
复制
PreparedStatement st = conn.createStatement()("SELECT * FROM tbl_lib WHERE lib_acc = ?);
st.setString(1, txtUn.getText());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52570788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档