JSP登陆验证SQL数据库时,方法错误,求解。有详细说明
问题描述:
我自学了一段时间JSP,正在做一个商城练练手。当做到登陆页面时,出现了错误。
为了完成登陆验证,我是这样做的。代码如下:
public class UserManager {
public static void main(String[] args) {
UserManager entity= new UserManager();
boolean i=entity.login("赵东", "1");
System.out.println(i);
}
public boolean login(String Name, String Pass) {
boolean exists = false;
Connection conn = DB.getConn();
try {
Statement stmt = conn.createStatement();
String sql="select * from user where userName='"+Name+"'";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
String i=rs.getString(3);
if(i==Pass){
exists = true;
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try{
conn.close() ; // 连接一关闭,所有的操作都将关闭
}catch(Exception e){}
}
return exists;
}
}
数据库截图如下:

但是当我运行程序,检验时。一直输出False。。这是为什么。
答
String i=rs.getString(3);既然是String类型
if(i==Pass)怎么能用“==”判断呢(equals())
答
出错了吧,如果是sqlserver的话,user是关键字
String sql="select * from user where userName='"+Name+"'";
改成
String sql="select * from [user] where userName='"+Name+"'";
答
你为啥不直接查询username和password?select * from user where username='' and password='',这样只需要判断是否存在这条记录就可以了。
答
String i=rs.getString(3);既然是String类型
if(i==Pass)怎么能用“==”判断呢(equals())