跳过结果集中的条件

时间:2017-04-25 21:24:34

标签: java mysql sql jdbc

我试图在java中创建一个Login函数来测试用户是否存在于数据库中。如果是,则打印出状态(1,2),其中1表示管理员,2表示学生。 在结果集中,我有条件来测试值。 我的问题是跳过了状态== 1的if语句。 这是我的代码:

public void Login(String username,String password) {

        try{
       Statement st = conn.createStatement();
       String query = "Select iduser, username, pass, status, firstname, lastname from users";
       ResultSet rs = st.executeQuery(query);   
            if (rs.next()) {

                int iduser = rs.getInt("iduser");
                String firstname = rs.getString("firstname");
                String lastname = rs.getString("lastname");
                int status = rs.getInt("status");

                if(status == 1){
                    System.out.println("Admin");
                }
                else if(status == 2){
                    System.out.println("Student");
                }
            } else {
                JOptionPane.showMessageDialog(null,"User not found!");
        }catch (Exception e){
            System.out.println(e);
        }
    }

这是我数据库中的表 Database User Table

2 个答案:

答案 0 :(得分:1)

尝试将if (rs.next())替换为while(rs.next())

String query = "Select iduser, username, pass, status, firstname, lastname from users"; 从您的表中获取“多个”所需记录。

iduser 2的记录可能会放在表格中和/或在iduser 1之前检索。

答案 1 :(得分:0)

所以我的代码和数据库结构发生了一些变化。我添加了一个jComboBox来选择状态,并更改了Login功能。 在按钮登录时,我添加了jComboBox作为第二个条件,它工作。 登录功能现在是:

public boolean Login(String username, String password, String status) {
   try{
       PreparedStatement pst = conn.prepareStatement("Select * from users where username=? and pass=? and status = ?");
       pst.setString(1, username);
       pst.setString(2, password);
       pst.setString(3, status);
       ResultSet rs = pst.executeQuery();                        
       if(rs.next()){            
           return true;    
       } else {
           JOptionPane.showMessageDialog(null, "User Does Not Exist");
           return false;
       }         
   } catch(Exception e) {
       e.printStackTrace();
       return false;
   }
}