登录跳转界面
跳转的第一个小问题
先是发现不管用户名密码是什么,总是登录成功,后通过使用System.out.println(),排查发现,在dao层运行sql语句的时候,判断方式是result是否为空,但是不曾注意到,如果没有一直数据,result依旧不为null.后通过判断result获取到的值与输入框内获取到的值对比,从而解决这个问题。
跳转的第二个小问题
在解决第一个小问题的时候,我一开始直接使用
if(username==result.getString(1) ) {
st=1;
}
//st为判断数据库内是否有该用户的状态,1为有,0为无,初始化为0
结果一直显示跳转不过来,后来发现不能使用==,应改为equals
if(username.equals(result.getString(1)) ) {
st=1;
}
//st为判断数据库内是否有该用户的状态,1为有,0为无,初始化为0
附源码dao层
public class UserDao {
//查询可以操作学生信息的用户
public int query_user(String username,String password) {
Connection con= JdbcUnit.getConnection();
PreparedStatement stmt=null;
ResultSet result=null;
List<User> userList = new ArrayList<>();
int st=0;//st为判断数据库内是否有该用户的状态,1为有,0为无,初始化为0
String sql="SELECT * FROM user where username = ? and password =?";
try {
stmt=con.prepareStatement(sql);//sql语句预存储
stmt.setString(1, username);//将数据插入占位符
stmt.setString(2, password);//将数据插入占位符
result=stmt.executeQuery();//sql语句执行
while(result.next()) {
//System.out.println(result.getString(1));
if(username.equals(result.getString(1)) ) {
st=1;
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUnit.close(result,stmt,con);
}
//System.out.println(st);
return st;
}
}
//sql语句执行那一部分可以简略一些,可以不必使用占位符?