【发布时间】:2017-06-15 06:18:34
【问题描述】:
rs.next() 在表中有数据时返回 false。使用 oracle 作为数据库。
try {
ps=con.prepareStatement("select * from users where uname=? and pass=?");
ps.setString(1, uname);
ps.setString(2, pass);
rs=ps.executeQuery();
out.println(rs.next());
if (rs.next()) {
out.println("<font color='green'>Successfull login</font>");
} else {
out.println(uname+" "+pass);
out.println("<font color='red'>Wrong username or password.</font>");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
【问题讨论】:
-
去掉这条语句
out.println(rs.next());,就可以正常使用了 -
当 if block 没有被执行时,我添加了
out.println(rs.next());以了解布尔值。 -
如果您想记录
rs.next()的结果并且您想稍后使用该值,您必须先将其分配给一个值并记录该值。添加一些关于 SQL 表及其列的信息。也许通行证被存储为散列(应该是)并且您正在搜索它的普通值? -
该值没有经过哈希处理,它是普通值。 @Pelocho
-
@Prashant 将
out.println(rs.next());放在 IF ELSE 块 之后