我试图在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);
}
}
答案 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;
}
}