代码如下:
//从上一个界面登陆,并在此界面得到userid和password,在这里对userid和password进行验证
<%
//这里是得到参数和链接数据库的代码,不用管
while(rs.next())
{
if(userid.equals(rs.getString("userid"))&&password.equals(rs.getString("password")))
{
out.print("登陆成功");
}
}
//当验证登陆信息失败时怎么写?
//不能在if后面直接跟else语句,要不然不管提交的参数是对是错都会执行的,如果有这方面的源代码也好,参考参考,谢谢

解决方案 »

  1.   

    可以用else
    在else的最后加上return;就行了
    return后面的都不会执行
      

  2.   

    上楼所说的意思是这写吗?
    while(rs.next())
    {
    if(userid.equals(rs.getString("userid"))&&password.equals(rs.getString("password")))
    {
    out.print("登陆成功");
    }
             else
             {
                      out.print("登陆失败");
             }
    }
    我试过,这样还是不行,而且问题更大,除了第一次注册的用户可以登陆外,其他的都不能登陆,而且else里边的语句都会执行
      

  3.   

    ………………
    你这个代码有问题,while是循环,相当于你把结果集每一条记录都和你取得的userid和password都检查了一遍,只要结果集里有2条以上记录,你的代码执行结果就会出现两种情况
      

  4.   

    用userid和password做where的条件直接去数据库中查找有无记录
    if(rs.next())
    {
        out.print("登陆成功");
    } else {
        out.print("登陆失败");
    }
      

  5.   

    我还不知道怎么写SQL语句,新手,希望能帮我写下行吗?谢了
      

  6.   

    PreparedStatement ps = con.preparedStatement("select * from login where userid=?,password=?");
    ps.setString(1,userid);
    ps.setString(2,password);
    ResultSet rs = ps.excuteQuery();
      

  7.   

    还是请你帮帮忙,我这还是有问题,需要的代码如下:
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs=null;

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn=DriverManager.getConnection("jdbc:odbc:leavaword");
    ps=conn.prepareStatement("select userid,password from member where userid='userid' AND password='password'");
    rs=ps.executeQuery();
    if(rs.next())
    {
    out.print("登陆成功");
    }
    else
    {
    out.print("登陆失败");
    }数据库链接没问题,不管是对的还是错的登陆信息,都是输出"登陆失败",能帮我修改下这段代码吗
      

  8.   

    harryzyp 我也是一个java的初学者,对java不太熟,我刚才分析了你这个问题的原因,假如用while,那么rs.next(),总有一次条件会为假,所以都会输出,登陆失败,你用if,假如第一次为空,也会输入登陆失败.
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs=null;
    int i=0; 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn=DriverManager.getConnection("jdbc:odbc:leavaword");
    ps=conn.prepareStatement("select count(*) from member where userid='userid' AND password='password'");
    rs=ps.executeQuery();
    while(rs.next())
    {
    if(userid.equals(rs.getString("userid"))&&password.equals(rs.getString("password")))
    {
       i=i++
             }
    } if i >0  {
    out.print("登陆成功");
    }
    else
    {
    out.print("登陆失败");
    }
      

  9.   

    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs=null;

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn=DriverManager.getConnection("jdbc:odbc:leavaword");
    ps=conn.prepareStatement("select * from member where userid=? AND password=?");            //这里用问号传值
             ps.setString(1,userid);         //userid和password是你输入的
             ps.setString(2,password);
    rs=ps.executeQuery();
    if(rs.next())
    {
    out.print("登陆成功");
    }
    else
    {
    out.print("登陆失败");
    }
    这样应该没有问题滴