jsp中取到用户名和密码之后怎么和数据库匹配?

我已经从上一个页面取到了交互数据,怎么在这个JSP页面和数据库进行匹配啊?
匹配到之后是否还需进行判断?是否还需要单独创建两个变量?
这是取到数据代码:
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String code=request.getParameter("code");
这是利用while查找的代码:
while(rs.next()){
out.print("<tr>");
out.print("<td>"+rs.getString("name")+"</td>");
out.print("<td>"+rs.getInt("code")+"</td>");
}
接下来不知道怎么进行了。。

直接用  select语句查询就可以了


 rs=sql.execute("select  * from 表名  where user='"+name+"' and password='"+code+"' ")
if(rs.next()){}

判断rs.next(),如果有结果就在{}里面执行操作,比如返回登录之后的页面

追问

if(rs.next()){}这个语句是说如果表中有有匹配的信息就怎样,但这个需要做循环吗,万一表中不同用户存在重复的密码,那这个方法会出现问题吗?

追答

rs.next() 是返回bool型数据。如果为真,则证明存在这个记录。

不用循环,这个只是检测上面select语句有没有返回的结果。

不同用户重复密码,根本就不影响。因为你是用的select语句查询的数据库,只有用户名密码匹配之后,才能返回结果的哈

追问

谢谢,我再问一下:这个rs.next() 返回bool值的话,那没有匹配到它会不会返回false也就是0呢,还是说就什么都不回返回?
如果会返回false,那后面的if判读为什么不用这样写呢:if(rs.next() == 0){}
如果匹配不到什么都不会返回的话,if( rs.next() ) {}这个句子就能直接判断re.next()有结果,不用在后面再加个.length != 0吗

追答

   false和0 是有区别的哈。。

if()  括号里面的条件判断语句 已经可以完全可以判断rs.next() 有没有返回数据。

没有必要if(rs.next() == 0){}  (我没试过,你自己试试呗)


.length != 0  是获取长度吧。你这里select返回的应该是一条数据(当然,如果数据库里面有用户名和密码都相同的两项,那么就是2条数据)

登录的简单判断你只需要匹配用户名密码在数据库是否存在就可以了。大体结构如下

rs=sql.execute("select  * from 表名  where user='"+name+"' and password='"+code+"' ")
if(rs.next()){
  //跳转到登陆成功的页面
}else{
 //跳转到登录失败的页面
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-07-29
大致是这样
select * from 用户表 where 用户 = name and 密码 = code
然后看rs的长度是不是1
不是1那就是错的 用户名或密码错误
又或者select * from 用户表 where 用户 = name
然后看rs的长度是不是1
不是1那就是错的,用户名不存在
如果是1,然后拿数据库中的code跟传回来的code比较
不一样的话就是密码错误追问

那我这个 while 循环的查询其实是不必要的是吗?
还是while查询之后再通过你说的
select * from 用户表 where 用户 = name and 密码 = code做判断

之后判断rs的长度用if(rs.Length == 1){}语句可以吗?

追答

可以的

追问

谢谢,那我这个while循环其实就可以不要的吧?

追答

如果你不需要定位到是账号错误还是密码错误的话,while就是不需要的

相似回答